Структуры Flashcards
В чем ошибка? Как исправить?
struct A { B b; } struct B { int c; } var a = new A(); Console.WriteLine(a.b.c)
Ошибки нет, так как это struct.
В чем ошибка в коде?
public struct Point { public Point() { X = 0; Y = 0; }
public int X; public int Y; }
У структуры нельзя переопределить конструктор по-умолчанию.
Что делать, если надо передать структуру в метод по ссылке?
Использовать ref. Такого ответа достаточно. Более сложный вариант — boxing. Для этого потребуется upcast к некоторому интерфейсу или object.
Что такое boxing?
Неявное копирование структуры в кучу. Например, при upcast в object или реализуемый интерфейс.
Пусть Point — это структура, содержащая публичные поля X, Y и метод GetLength. В каких строчках есть ошибки и почему?
Point p; p.X = 5; var length = p.GetLength();
Только в третьей. Потому что нельзя использовать методы не инициализированной полностью структуры. А вот присвоить значение полю можно.