MyVariable = default(MyObject);
zastanawiam się co to znaczy ?
1 odpowiedź
Dla typu referencyjnego zwraca
null
Dla typu wartości innego niż
Nullable <T>
zwraca wartość zainicjowaną przez zeroDla
Nullable <T>
zwraca pustą (pseudo-null) wartość (w rzeczywistości jest to ponowne oświadczenie drugiego punktu, ale warto to wyraźnie zaznaczyć)
Największe zastosowanie wartości default(T)
ma miejsce w ogólnych, i takich składniach jak np wzorzec Try ...
:
bool TryGetValue(out T value) {
if(NoDataIsAvailable) {
value = default(T); // because I have to set it to *something*
return false;
}
value = GetData();
return true;
}
Tak się składa, że używam go również do generowania kodu, gdzie trudno jest inicjować pola / zmienne - ale jeśli znasz typ:
bool someField = default(bool);
int someOtherField = default(int)
global::My.Namespace.SomeType another = default(global::My.Namespace.SomeType);