Generika, die in struct vs class verwendet werden

Angenommen, wir haben Folgendesstruct Definition, die Generika verwendet:

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

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

}

Der Compiler sagt

'Foo.Second' muss vollständig zugewiesen sein, bevor die Steuerung an den Anrufer zurückgegeben wird

jedoch, wennFoo Ist eine Klasse, dann wird sie erfolgreich kompiliert.

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

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

}

Warum? Warum behandelt der Compiler sie anders? Außerdem, wenn im ersten kein Konstruktor definiert istFoo dann kompiliert es. Warum dieses Verhalten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage