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?