Ogólne używane w struct vs class

Załóżmy, że mamy następującestruct definicja używająca generycznych:

public struct Foo<T>
{
    public T First; 
    public T Second;

    public Foo(T first)
    {
        this.First = first;
    }

}

Kompilator mówi

'Foo.Second' musi być w pełni przypisany, zanim kontrola zostanie zwrócona do dzwoniącego

Jeśli jednakFoo jest klasą, a następnie kompiluje się pomyślnie.

public class Foo<T>
{
    public T First; 
    public T Second;

    public Foo(T first)
    {
        this.First = first;
    }

}

Czemu? Dlaczego kompilator traktuje je inaczej? Ponadto jeśli w pierwszym nie zdefiniowano żadnego konstruktoraFoo potem się kompiluje. Dlaczego to zachowanie?

questionAnswers(4)

yourAnswerToTheQuestion