Existe-t-il un moyen rapide de comparer l'égalité de plus d'une valeur en C#?Est-ce possible en C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Merci
Existe-t-il un moyen rapide de comparer l'égalité de plus d'une valeur en C#?Est-ce possible en C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Merci
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))
Cela pourrait aider :)
if (a == b && b == c && c == d) {
// do something
}
Non, ce n'est pas possible, vous devez scinder en déclarations séparées.
if(x == y && x == z) // now y == z
{
}
Bonne chance
Il n'y a aucun moyen direct de le faire en utilisant C#, mais vous pouvez aller avec une classe d'aide. Consultez ce sujet VB.NET dédié à ce problème VB.Net: test multiple values for equality?
En C#, un opérateur d'égalité (==
) évalue à un bool
si 5 == 6
est évaluée à false
.
La comparaison 5 == 6 == 2 == 2
se traduirait par
(((5 == 6) == 2) == 2)
qui évalue à
((false == 2) == 2)
qui essaierait de comparer un bool
avec un int
. Ce n'est que si vous comparez les valeurs booléennes de cette façon que la syntaxe serait valide, mais probablement ne pas faire ce que vous voulez.
La façon de faire la comparaison multiple est ce que @Joachim Sauer suggéré:
a == b && b == c && c == d
+1 pour expliquer pourquoi cela ne fonctionne pas dans C# –
Dans le 'if', j'utiliserais'! Args [i] .Equals (args [i - 1]) '. Cela permet l'utilisation de types de référence implémentant 'IEqualityComparer'. Par défaut '==' compare pour l'égalité de référence sur les types ref, pas sa valeur sous-jacente. – spoulson