Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

C# Syntax: ??-Operator und int? [Antwort: null coalescing und Nullable]
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

hallo syn87,

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

herbivore
private Nachricht | Beiträge des Benutzers
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von syn87
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.
private Nachricht | Beiträge des Benutzers
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

beantworten | zitieren | melden

Stimmt, danke :)
private Nachricht | Beiträge des Benutzers