Laden...

C# Syntax: ??-Operator und int? [Antwort: null coalescing und Nullable]

Erstellt von syn87 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.123 Views
S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren
C# Syntax: ??-Operator und int? [Antwort: null coalescing und Nullable]

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

1.346 Beiträge seit 2008
vor 14 Jahren

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

49.485 Beiträge seit 2005
vor 14 Jahren

hallo syn87,

zu ?? siehe Kanntet ihr den ??-Operator? [null coalescing-Operator]
zu int? siehe Nullable<int>

herbivore

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren

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

5.742 Beiträge seit 2007
vor 14 Jahren

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.

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren

Stimmt, danke 😃