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?
Odpowiedz
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, ...
Całkiem rozsądne wyjaśnienie można znaleźć na stronie: http://en.csharp-online.net/CSharp_FAQ:_Why_must_struct_constructors_have_at_least_one_argument
Cytując: "Środowisko wykonawcze wspólnego języka .NET (CLR) nie gwarantuje, że zostaną wywołane konstruktory bez parametrów .Jeśli struktura miałaby mieć domyślne konstruktory bez parametrów, implikuje się, że domyślne konstruktory będą zawsze wywoływane. brak takiej gwarancji. "
- 1. Czy klasa może nie mieć konstruktora?
- 2. Klasa podstawowa nie zawiera konstruktora bez parametrów?
- 3. Dlaczego klasa XML-Serializable potrzebuje konstruktora bez parametrów
- 4. Dlaczego FacesServlet nie może mieć wzorca url/*.?
- 5. Czy można serializować obiekty bez konstruktora bez parametrów w WCF?
- 6. "System.Web.HttpContext nie może być serializowany, ponieważ nie ma konstruktora bez parametrów."
- 7. Usługa sieci Web nie może zostać przekształcona do postaci szeregowej, ponieważ nie ma konstruktora bez parametrów
- 8. Dlaczego nie mogę przekazać parametrów do konstruktora aktywności Androida?
- 9. Dlaczego nie mogę wymusić klas pochodnych na konstruktorach bez parametrów?
- 10. Autofac wybór parametrów bez parametrów
- 11. Błąd JUnit - IllegalArgumentException: Klasa testowa może mieć tylko jednego konstruktora.
- 12. Dlaczego struktura .NET struct powinna mieć mniej niż 16 bajtów?
- 13. dlaczego interfejs nie może mieć statyczną metodą członek
- 14. Dlaczego DuplicateRecordFields nie może mieć wnioskowania o typie?
- 15. Dlaczego web.xml "context-param" nie może mieć znaków [dzieci]?
- 16. Dlaczego PriorityQueue w Javie nie może mieć initialCapacity 0?
- 17. Dlaczego kompilator nie może mieć konfliktu "shift/shift"?
- 18. Dodaj konstruktora kopii na podstawie parametrów szablonu
- 19. Klasa C# bez konstruktora
- 20. Dlaczego pierwsza lista parametrów klasy nie może być niejawna?
- 21. Uzyskiwanie typu bez parametrów
- 22. Dlaczego PHP nie ma domyślnego konstruktora?
- 23. plony struct All-publiczne wezwanie do niejawnie usuniętych domyślnego konstruktora
- 24. Jak mieć struct z szablonu z klasą
- 25. Czy istnieje sposób inicjowania członków struktury bez użycia konstruktora?
- 26. Dlaczego kopiowanie konstruktora nie jest wywoływane?
- 27. Czy można używać Protobuf-Net z klasą bez konstruktora bez parametrów?
- 28. Przenoszenie Konstruktora bez wskaźników
- 29. Błąd serwera w aplikacji "/". Nie zdefiniowano konstruktora bez parametrów dla tego obiektu
- 30. SlidingDrawer nie może mieć nieokreślonych wymiary
Duplikatem jest http://stackoverflow.com/questions/333829, "Dlaczego nie można zdefiniować domyślnego konstruktora dla struktury w .NET" –
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) –