Domanda

Ho una domanda C# molto semplice: le seguenti affermazioni non sono uguali quando si tratta di una stringa vuota?

s ?? "default";

o

(!string.IsNullOrEmpty(s)) ? s : "default";

Penso: da allora string.Empty!=null, l'operatore di coalescenza può impostare il risultato della prima istruzione su un valore vuoto quando quello che voglio veramente è il secondo. Dato che la stringa è in qualche modo speciale (== e! = Sono sovraccarichi in valore), volevo solo chiedere agli esperti di C# per assicurarmi.

Grazie.

È stato utile?

Soluzione

Sì, hai ragione, non sono gli stessi e nel modo in cui hai specificato.

Se non sei soddisfatto della prima forma, potresti scrivere un'estensione di:

public static string DefaultIfNullOrEmpty(this string x, string defaultValue)
{
    return string.IsNullOrEmpty(x) ? defaultValue : x;
}

allora puoi semplicemente scrivere:

s.DefaultIfNullOrEmpty("default")

Nel tuo codice principale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top