Обобщения, используемые в структуре против класса

Предположим, что у нас есть следующее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 тогда это компилируется. Почему это поведение?

Ответы на вопрос(4)

Ваш ответ на вопрос