L'operatore null-caalescenza corrisponde alla stringa vuota?
-
28-10-2019 - |
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.
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