| 

.NET C# Java Javascript Exception

8
Hallo zusammen,

ich programmier nun schon länger in c#. Nun bin ich auf folgenden Code gestoßen:

public int? SomeValue
{
get
{
//here are some code
}
}

Wofür steht in der ersten Zeile das Fragezeichen?

Danke schonmal im voraus.
Andy
29.06.2011
cruX 803 1 1 9
cruX 803 1 1 9
6 Antworten
9
Nullable .. dh. das eine Variable auch einen Null-Wert entgegen nehmen kann.

Beispiel:

int a;
a = 1; // geht
a = null; //geht nicht

int? b;
b = 1; //geht
b = null; //geht
29.06.2011
Floyd 14,6k 3 9
5
Danke :)

das lässt sich doch auch über
Nullable<int> SomeValue
lösen? Wo ist dann der Unterschied?

Andy
29.06.2011
cruX 803 1 1 9
1
Richtig, kürze Schreibweise ;)
Floyd 29.06.2011
3
Es ist viel kürzer und komfortabler!
29.06.2011
Smokey 99 3
3
Hallo,
das '?' am Ende einer Deklaration kann äußerst nutzlich sein.
z.B
beim Erkennen nicht sinnvoll initialisierter Werte
- bool IsMale; -
Es kann sein das die Möglichkeit besteht sofort sinnvoll zu initialsieren, kann auch nicht sein.
- bool? IsMale = null;
Jetzt kann ich jederzeit erkennen ob diese Variable initialisiert wurde oder nicht
Console.WriteLine("Initialisiert: {0}", IsMale == null ? "n":"j");
Ähnlich sinnvolle Einsatzgebiete gibt es bei bei Aufzählungen
ConsoleColor? eColor = null;
...
eColor = eColor ?? ConsoleColor.Blue;
oder
eColor = eColor == null ? ConsoleColor.Blue : ConsoleColor.Red;
Auch das ist eine Variante
int? x = null;
while ((x != null) && (x.Value != 3))
x++;
Schleife wird nur bei initialisierter Variable ausgeführt.
03.11.2011
HR_1953 31 1
1
Wenn wir schon bei Fragezeichen sind, kurz oder lang wirst du noch auf weitere treffen, den sogenannten ?-Operator. Damit kannst du eine kürzere Schreibweise für "Entscheidungen" verwenden.

string elem = myString.Contains("Hello") ? "Hello" : String.Empty;

ist equivalent zu

if(myString.Contains("Hello"))
elem = "Hello";
else
elem = String.Empty
29.06.2011
Mario Priebe 6,0k 3 9
1
Hi Mario, Zeit zum Schlafengehen. Dein Beispiel für den ??-Operator ist schlicht falsch. Siehe http://msdn.microsoft.com/en-us/library/ms173224.aspx Der Ausdruck rechts vom Operator wird herangezogen, wenn die linke Seite null ist, was in Deinem Beispiel zu einer NullReferenceException führen würde.
Matthias Hlawatsch 29.06.2011
beim schreiben kam mir schon irgendwie was komisch vor :) ich "kicks" mal wieder raus hehe, danke für den Hinweis!
Mario Priebe 29.06.2011
Bitteschön :-) Vermutlich sehnst Du Dich so wie ich nach einer Kurzschreibweise für
var x = y != null ? y.P : someDefault;
Aber genau das kann der ??-Operator leider nicht :-(
Matthias Hlawatsch 30.06.2011
ja, schnief. Naja man kann ja nicht alles haben : )
Mario Priebe 30.06.2011
0
Hi, ja den ? Operator kenne ich ja schon an vielen Stellen. Sei es das einfache Fragezeichen, oder das ??. Nur direkt an einer Deklaration hatte ich es noch nicht gesehen (oder gezielt ignoriert :))

Danke
Andy
30.06.2011
cruX 803 1 1 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH