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?