Структуры Flashcards

1
Q

В чем ошибка? Как исправить?

struct A { B b; }
struct B { int c; }
var a = new A();
Console.WriteLine(a.b.c)
A

Ошибки нет, так как это struct.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

В чем ошибка в коде?

public struct Point
{
    public Point()
    {
        X = 0;
        Y = 0;
    }
public int X;
public int Y; }
A

У структуры нельзя переопределить конструктор по-умолчанию.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что делать, если надо передать структуру в метод по ссылке?

A

Использовать ref. Такого ответа достаточно. Более сложный вариант — boxing. Для этого потребуется upcast к некоторому интерфейсу или object.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое boxing?

A

Неявное копирование структуры в кучу. Например, при upcast в object или реализуемый интерфейс.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Пусть Point — это структура, содержащая публичные поля X, Y и метод GetLength. В каких строчках есть ошибки и почему?

Point p;
p.X = 5;
var length = p.GetLength();
A

Только в третьей. Потому что нельзя использовать методы не инициализированной полностью структуры. А вот присвоить значение полю можно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly