Hallo zusammen,
ähnlich wie bei Lambda ausdrücken bekommt man durch die Suche nicht wirklich das, was man möchte.
In einem Projekt habe ich das hier gefunden:
private string _emailAddress;
private int? _age;
public string Name {
get { return _name ?? string.Empty; }
set { _name = value; }
}
public string EmailAddress {
get { return _emailAddress ?? string.Empty; }
set { _emailAddress = value; }
}
public int? Age {
get { return _age; }
set { _age = value; }
}
Nun die Frage. Wofür stehen Sachen wie int? und _name ?? string.Empty GENAU. Beim zweiten kann ich mir das noch denken, beim ersten eher nicht. Gibt es bei MSDN irgendwo eine Informationen zu derartigen Syntaxen?
LG
Zum ersten:
INt ist ein Valuetype. Normalerweise kann ein Valuetype nicht Null sein. durch das ? wird das int zu einem Referenztyp und kann somit Null sein.
Zum zweiten:
der ?? Operator ist eine Art abkürtzung:
a ?? b;
==
a == null ? b : a;
==
if(a == null)
return b;
else
return a;
Gruß pdelvo
hallo syn87,
zu ?? siehe Kanntet ihr den ??-Operator? [null coalescing-Operator]
zu int? siehe Nullable<int>
herbivore
Hallo ihr beiden,
danke für die schnelle Antwort. Kennt jemand ein gutes Beispiel dafür, wo man ein Nullable<int> also int? einsetzen könnte?
Wie gesagt das obige Beispiel stammt nicht von mir, und ich wüsste auch nicht so recht, wo der Nutzen liegen könnte.
Danke und LG
syn
danke für die schnelle Antwort. Kennt jemand ein gutes Beispiel dafür, wo man ein Nullable<int> also int? einsetzen könnte?
Nullable Types werden häufig eingesetzt, wenn die Angabe einer Property (mit einem Wertetypen) optional ist und kein sinnvoller Defaultwert (z.B. 0 usw.) gefunden werden kann.
Datenbanken können z.B. auch null
für "Wertetypen" (oder in dem Fall eben Nummern usw.) zulassen. Wenn man also eine DB 1:1 in Objekte übertragen möchte, kommt man häufig um Nullabels nicht herum.