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