Gibt es eine kürzere Möglichkeit, etwas wie dies zu schreiben:
if(x==1 || x==2 || x==3) // do something
Was ich suche, ist etwas wie dies:
if(x.in((1,2,3)) // do something
Gibt es eine kürzere Möglichkeit, etwas wie dies zu schreiben:
if(x==1 || x==2 || x==3) // do something
Was ich suche, ist etwas wie dies:
if(x.in((1,2,3)) // do something
Sie könnten dies erreichen, indem Sie die List.Contains Methode verwenden:
if(new []{1, 2, 3}.Contains(x))
{
// x ist entweder 1 oder 2 oder 3
}
public static bool In(this T x, params T[] set)
{
return set.Contains(x);
}
...
if (x.In(1, 2, 3))
{ ... }
Erforderliche Lektüre: MSDN Erweiterungsmethoden
Wenn es sich in einem IEnumerable
befindet, verwenden Sie dies:
if (enumerable.Any(n => n == value)) //whatever
Andernfalls, hier ist eine kurze Erweiterungsmethode:
public static bool In(this T value, params T[] input)
{
return input.Any(n => object.Equals(n, value));
}
Fügen Sie es in einer static class
hinzu und Sie können es wie folgt verwenden:
if (x.In(1,2,3)) //whatever
Ab C#9 unterstützt die Sprache ein Muster dafür:
if(x==1 || x==2 || x==3) foo();
kann geschrieben werden als:
if (x is (1 or 2 or 3)) foo();
Diese Muster können ziemlich komplex sein. Eine Beschreibung für diesen Fall habe ich hier gefunden: https://learn.microsoft.com/en-US/dotnet/csharp/language-reference/operators/patterns#precedence-and-order-of-checking
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.