Co oznacza default(object); w C# i jaką ma funkcję?

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 zero

  • Dla 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);

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.