Esiste un modo rapido per confrontare l'uguaglianza di più di un valore in C#?È possibile in qualche modo in C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Grazie
Esiste un modo rapido per confrontare l'uguaglianza di più di un valore in C#?È possibile in qualche modo in C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Grazie
public static class Common {
public static bool AllAreEqual<T>(params T[] args)
{
if (args != null && args.Length > 1)
{
for (int i = 1; i < args.Length; i++)
{
if (args[i] != args[i - 1]) return false;
}
}
return true;
}
}
...
if (Common.AllAreEqual<int>(a, b, c, d, e, f, g))
Questo potrebbe aiutare :)
No questo non è possibile, è necessario dividerlo in prospetti separati.
if(x == y && x == z) // now y == z
{
}
Buona fortuna
Non v'è alcun modo diretto per farlo utilizzando C#, ma si può andare con una certa classe di supporto. Dai un'occhiata a questo argomento VB.NET dedicata a questo problema VB.Net: test multiple values for equality?
In C#, un operatore di uguaglianza (==
) restituisce un bool
così 5 == 6
viene valutato come false
.
Il confronto 5 == 6 == 2 == 2
si tradurrebbe in
(((5 == 6) == 2) == 2)
che valuta a
((false == 2) == 2)
che cercare di confrontare un bool
con una int
. Solo se si confrontassero i valori booleani in questo modo la sintassi sarebbe valida, ma probabilmente non fare ciò che si desidera.
Il modo per farlo è quello di confronto multiplo @Joachim Sauer suggerito:
a == b && b == c && c == d
+1 per spiegare perché non funziona in C# –
In 'if', userei'! Args [i] .Equals (args [i - 1]) '. Ciò consente l'uso di tipi di riferimento che implementano 'IEqualityComparer'. Di default '==' confronta per l'uguaglianza di riferimento sui tipi ref, non il suo valore sottostante. – spoulson