Обобщения, используемые в структуре против класса
Предположим, что у нас есть следующееstruct
определение, которое использует дженерики:
public struct Foo
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
Компилятор говорит:
Foo.Second» должен быть полностью назначен до того, как управление будет возвращено вызывающей стороне
Однако еслиFoo
это класс, то он успешно компилируется.
public class Foo
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
Зачем? Почему компилятор относится к ним по-разному? Более того, если конструктор не определен в первомFoo
тогда это компилируется. Почему это поведение?