Jak rozumiem domyślny (obiekt), gdzie "obiekt" jest dowolnym typem odniesienia, zawsze zwraca wartość null, ale czy mogę określić, co jest domyślne? Na przykład, chcę domyślny (obiekt) == nowy obiekt();Określ domyślną wartość dla typu odniesienia
Odpowiedz
nr default(type)
zawsze zwraca to samo - „zero” ed "wersja tego typu. W przypadku typu odniesienia jest to uchwyt do obiektu, który zawsze jest ustawiony na wartość zero - co odpowiada null
. Dla typu wartości jest to zawsze struktura z wszystkimi elementami ustawionymi na zero.
Nie można zmienić tego zachowania - specyfikacja języka została zaprojektowana w ten sposób.
Edit: Co do Twojego komentarza:
Żeby móc powiedzieć
FirstOrDefault()
i nigdy nie uzyskać null.
Nie polecam tego w żadnym wypadku. Użytkownicy oczekują, że FirstOrDefault()
zwróci null
w przypadku niepowodzenia. Byłoby lepiej napisać własną metodę rozszerzenia:
static T FirstOrNewInstance<T>(this IEnumerable<T> sequence) where T : class, new()
{
return sequence.FirstOrDefault() ?? new T();
}
Niestety, nie jestem Jon Skeet ...
Ale tak czy inaczej, odpowiedź brzmi „nie można nie”
Zwykle Jon Skeet wyjaśnia, dlaczego (lub dlaczego nie w tym przypadku) :) – PostMan
@PostMan, jak powiedziałem, nie jestem Jon Skeet;). W każdym razie, nie sądzę, że tu jest cokolwiek do wyjaśnienia ... to po prostu niemożliwe. –
Po prostu wymyśl, wszystko będzie dobrze :) Ale tak, zgadzam się, nie ma żadnego wyjaśnienia poza tym, że nie możesz. (inne niż to jest decyzja projektowa) – PostMan
- 1. określ domyślną gałąź dla innego niż domyślny zdalnego dla przeciągnięcia
- 2. Określ domyślną wartość właściwości jako NULL na wiosnę
- 3. C#: Jak znaleźć wartość domyślną dla typu run-time?
- 4. dla typu wejściowego = "liczba" jak ustawić wartość domyślną na 0
- 5. Jak podać wartość domyślną dla parametru typu delegata w C#?
- 6. Jak uzyskać domyślną wartość typu ogólnego?
- 7. W jaki sposób wyemitujesz domyślną wartość typu?
- 8. Jak ustawić wartość domyślną dla manifestPlaceholder
- 9. Ustaw domyślną wartość zachęty dla ciągu znaków
- 10. MySQL - Usuń domyślną wartość dla pola Datetime
- 11. Dodaj domyślną wartość dla czasu (7) pole
- 12. Jak ustawić wartość domyślną dla WForms SelectField?
- 13. Objective-C ustaw domyślną wartość dla właściwości
- 14. Jak mogę zwrócić wartość domyślną dla atrybutu?
- 15. Sequence jako wartość domyślną dla kolumny
- 16. Dodaj domyślną wartość pola typu enum w schemacie budowniczego
- 17. Ustaw wyliczenie na domyślną wartość
- 18. Ustaw wartość domyślną dla DisplayFormatAttribute.ConvertEmptyStringToNull na wartość false w witrynie
- 19. Definiowanie ograniczenia typu ogólnego interfejsu dla wartości i typów odniesienia
- 20. bash przypisz wartość domyślną
- 21. Ustaw domyślną wartość właściwości
- 22. Wartość domyślna typu dynamicznego?
- 23. Wartość domyślna typu w Runtime
- 24. Jak przekazać wartość zmiennej nadrzędnej do pakietu potomnego dla typu odniesienia: Zewnętrzny numer referencyjny
- 25. Jeśli określę wartość domyślną dla argumentu typu "std :: string &" w C++, może to spowodować wyciek pamięci?
- 26. Jak ustawić wartość domyślną dla właściwości zależności typu pochodnego od dependencyobject
- 27. fsolve zawsze zwraca wartość domyślną
- 28. C# - Jak sprawdzić, czy wystąpienie jest wartością domyślną dla jego typu
- 29. Spring-boot: ustaw domyślną wartość konfigurowalnych właściwości
- 30. Jak wybrać domyślną wartość pola
Nie, to niemożliwe. Czy możesz nam powiedzieć, jaki jest ostateczny cel, czyli dlaczego chcesz tę funkcję? – Ani
Nie. I dlaczego miałbyś to robić? Jeśli obiekt ma wartość NULL, po prostu przypisz nowy! –
Wystarczy, że powiemy FirstOrDefault() i nigdy nie otrzymamy wartości NULL. Chyba po prostu napiszę nową metodę rozszerzenia. –