Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich habe mich gefragt, über ?? Zeichen in C# Code. Wofür ist das? Und wie kann ich es verwenden?

Was ist int?? Ist es ein Nullable-int?

Siehe auch:

  

?? Null Coalescing Operator -> Was bedeutet koaleszierenden

War es hilfreich?

Lösung

Es ist die „Null-Koaleszenz-Operator“ genannt und funktioniert so etwas wie folgt aus:

Statt tun:

int? number = null;
int result = number == null ? 0 : number;

Sie können jetzt nur tun:

int result = number ?? 0;

Andere Tipps

Es ist der null Koaleszierstruktur Operator . Es wurde in C # 2 eingeführt.

Das Ergebnis des Ausdrucks a ?? b ist a wenn das nicht null ist, oder b anders. b wird nicht ausgewertet, wenn es gebraucht wird.

Zwei schöne Dinge:

  • Der Gesamt Typ des Ausdrucks ist die der zweiten Operanden, was wichtig ist, wenn Sie Nullable-Wertetypen verwenden:

    int? maybe = ...;
    int definitely = maybe ?? 10;
    

    (Beachten Sie, dass Sie keine Nicht-Nullable-Wertetyp als erster Operand verwenden können - es wäre sinnlos.)

  • Die Assoziativität Regeln bedeuten, Sie können Kette wirklich leicht. Zum Beispiel:

    string address = shippingAddress ?? billingAddress ?? contactAddress;
    

Das wird verwenden, um den ersten Nicht-Null-Wert aus dem Versand, Rechnungsstellung oder Kontaktadresse.

Das ist der coalesce Operator. Es ist im Wesentlichen eine Abkürzung für die folgende

x ?? new Student();
x != null ? x : new Student();

MSDN-Dokumentation auf dem Operator

Es ist der neue Null Coalesce Operator.

Die ?? Operator gibt den linken Operanden, wenn es nicht null ist, sonst gibt er den rechten Operanden.

Sie können darüber lesen Sie hier: http://msdn.microsoft.com/en-us/ Bibliothek / ms173224 (VS.80) aspx

Es ist eine Abkürzung für:

Text = (category == null ? "Home" : category);

es ist der coalesce Betreiber. es wird einen anderen Wert zurück, wenn der erste Wert null

string value1 = null;
string value2 = "other";

string value3 = value1 ?? value2; // assigns "other" to value 3

überprüft er, ob die Kategorie null ist - wenn dies der Fall des Nullwert ist, wird durch „Home“ ersetzt

.

Eines meiner Lieblings verwendet für den Null-Koaleszenz-Operator ist zu vermeiden, wenn Aussagen in meinem Code (Ich denke, wenn Aussagen hässlich sind und nur die Dinge Krempel die meiste Zeit auf). Zum Beispiel ein typisches Szenario nehmen, wo man etwas aus dem Cache, falls verfügbar, kann wählen, sonst aus der db laden zu laden und den Cache füllen.

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;

    if (data == null) {
        data = DAL.GetData(some parameters...);
        HttpRuntime.Cache.Add("key", data, ....);
    }

    return data;
}

Für mich ist das hässlich Code. Ich kann ein bisschen anal sein, aber warum Refactoring es nicht auf diese statt?

private SomeData GetDataAndCache() {
    var data = DAL.GetData(some parameters...);
    HttpRuntime.Cache.Add("key", data, ....);
    return data;
}

private SomeData GetData() {
    var data = HttpRuntime.Cache.Get("key") as SomeData;
    return data ?? GetDataAndCache();
}

Es ist mehr eng an SRP und ist sauberer und leichter zu lesen, IMO. Die Funktionen erfüllen genau eine klar erkennbare Funktion jeder.

Wenn Kategorie null ist, Text wird "Start"

Gibt den ersten nicht-Null-Wert. Handlich.

?? Null-Coalescing Operator

int? int ist ein NULL festlegbaren, was bedeutet, es die Werte eines normalen int und null haben kann. Lesen Sie dieser .

Das ist der null-koaleszierenden Operator . Es ist mit Nullable Types (unter anderem verwendet , sorry:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top