2009-02-22 6 views
11

Dlaczego struct nie może mieć konstruktora bez parametrów? Na czym polega problem z tym, co robi CLR lub dlaczego jest niedozwolone? Proszę wyjaśnij to, ponieważ tego nie rozumiem.Dlaczego struct nie może mieć konstruktora bez parametrów?

+0

Duplikatem jest http://stackoverflow.com/questions/333829, "Dlaczego nie można zdefiniować domyślnego konstruktora dla struktury w .NET" –

+0

Duplikat: [Dlaczego nie można zdefiniować domyślnego konstruktora dla struct w .NET] (http://stackoverflow.com/questions/333829/why-cant-i-define-a-default-constructor-for-a-struct-innet) –

Odpowiedz

14

Nie mogę mieć jawnego konstruktora bez parametrów, tylko domyślnego, który inicjalizuje wszystkich członków do ich domyślnych.

Chociaż CLR na to pozwala, C# ma nie pozwalają kodowanym mieć domyślnego konstruktora bez parametrów . Przyczyna: polega na tym, że dla typu wartości kompilatory domyślnie nie generują domyślnego konstruktora , ani nie generują wywołania do domyślnego konstruktora. Tak więc, , nawet jeśli zdarzyło Ci się zdefiniować domyślny konstruktor , nie będzie on wywoływany , a to tylko wprowadzi Cię w błąd. Aby uniknąć takich problemów, kompilator C# blokuje definicję domyślnego konstruktora przez użytkownika. I ponieważ nie generuje domyślny konstruktora, nie można zainicjować pola przy ich definiowaniu, ...

Powiązane problemy