Esiste un modo migliore (più bello) per scrivere questa istruzione if?Controllo di più string per null in un'istruzione if
if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
Esiste un modo migliore (più bello) per scrivere questa istruzione if?Controllo di più string per null in un'istruzione if
if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
Forse usando il null-coalescing operator(??
):
if((string1 ?? string2 ?? string3 ?? string4 ?? string5 ?? string6) == null){ ;}
Se tutte le stringhe sono in una raccolta è possibile utilizzare Linq:
bool allNull = strings.All(s => s == null);
string[] strs = new string[] { string1, string2, string3 };
if(strs.All(str => string.IsNullOrEmpty(str))
{
//Do Stuff
}
Oppure utilizzare strs.All(str => str == null)
se non si vuole verificare la presenza di stringhe vuote.
Si potrebbe mettere tutte le stringhe in un elenco e utilizzare
if(listOfStrings.All(s=>s==null))
Per lo meno si può mettere su più righe
if(string1 == null
&& string2 == null
&& string3 == null
&& string4 == null
&& string5 == null
&& string6 == null)
{...}
Fai un IEnumerable di stringhe (lista o array. ...), quindi è possibile utilizzare .All()
var myStrings = new List<string>{string1,string2,string3....};
if(myStrings.All(s => s == null))
{
//Do something
}
Oppure in una singola riga ... 'if (Enumerable.All (nuova stringa [] {str1, str2, str3, str4}, s => s == null))' –
@JimMischel: crea una raccolta aggiuntiva solo abbreviare una valutazione. A proposito, non lo accorcia nemmeno veramente. –
@TimSchmelter: Sì, crea una raccolta aggiuntiva, così come la risposta che hai upvoted. –
Questo dovrebbe fare lo stesso:
if (string.IsNullOrEmpty(string1 + string2 + string3 + string4 + string5 + string6)){...}
Beh, non so se è più bello o meglio, oppure no, è possibile utilizzare il metodo IEnumerable.Any come Questo;
Determina se una sequenza contiene elementi.
List<string> list = new List<string>{"string1","string2","string3", "string4", "string5"};
if(list.Any(n => n == null))
{
}
Ed è possibile utilizzare Enumerable.All() metodo come;
Determina se tutti gli elementi di una sequenza soddisfano una condizione.
if (Enumerable.All(new string[] { string1, string2, string3, string4, string5 }, s => s == null))
{
Console.WriteLine("Null");
}
Nel caso in cui si desidera controllare nulla o vuoto, qui è un altro modo senza array:
if (string.Concat(string1, string2, string3, string4, string5).Length == 0)
{
//all null or empty!
}
Non controlla se tutti sono nulli, come con la risposta di Dennisch. –
@Tim è vero, post modificato per riflettere questo. –
Se hai fatto una funzione come questa:
public static bool AllNull(params string[] strings)
{
return strings.All(s => s == null);
}
Quindi puoi chiamare così:
if (AllNull(string1, string2, string3, string4, string5, string6))
{
// ...
}
In realtà, si potrebbe cambiare AllNull() per lavorare con qualsiasi tipo di riferimento, in questo modo:
public static bool AllNull(params object[] objects)
{
return objects.All(s => s == null);
}
se (String.IsNullOrWhiteSpace (string1) && ...-> quindi non solo controlli le stringhe null, ma anche quelle vuote e alcune contenenti solo spazi – Offler
Hai davvero bisogno di così tante variabili stringa separate? Non puoi creare un array o un elenco di stringhe e usarlo invece? Molto probabilmente semplificherà anche molte altre operazioni. –
Con le informazioni che hai dato, no, non proprio (suppongo che tu possa infrangerle su più righe se questo ti aiuta), ma @JohnWillemse indica il punto. Se hai bisogno di molte variabili stringa, forse devi pensare di utilizzare una struttura dati diversa che possa incapsulare questa logica. –