如何测试int的值是例如1,2,4还是5?我以为我可以做这样的事情,但显然不是。
if(someInt == (1||2||4||5))
答案 0 :(得分:4)
使用LINQ:
if ((new[] {1,2,4,5}).Contains(someInt))
答案 1 :(得分:3)
编写扩展方法
static class MiscExtensions
{
static bool EqualToAny<T>(this T i, params T[] items)
{
return items.Any(x => x.Equals(i));
}
}
并像这样使用
static class Program
{
static void Main(string[] args)
{
int myNumber = 5;
if (myNumber.EqualToAny(1, 2, 3, 4, 5))
Console.WriteLine("Hello, World");
}
}
答案 2 :(得分:1)
您需要像这样编写if
语句
if (someInt==1 || someInt==2 || someInt==4 || someInt==4)
或者您可以使用switch
声明
switch (someInt)
{
case 1:
case 2:
case 4:
case 5:
// do something
break;
}
分解您尝试过的代码非常有趣。你写道:
if(someInt == (1||2||4||5))
我想在你的脑海里,你把它读作,如果someInt等于1或2或4或5 。如果计算机表现得像人类,那么这将起作用。但我们都知道计算机的行为并不像那样!
==
等于运算符(二元运算符)在其两个操作数相等时返回true
。这意味着,在您的版本中,如果编译,您需要someInt
等于(1||2||4||5)
。为了使其更有意义,我们需要(1||2||4||5)
来评估单个值,而不是产生编译错误。并且,如果它确实评估为单个值,那么它就不具有您想要的含义。因为当someInt
等于四个候选值之一时,您希望测试返回true。
底线是==
测试恰好两个值之间的精确相等。
答案 3 :(得分:1)
作为替代方案,您可以使用:
switch(someInt)
{
case 1:
case 2:
case 4:
case 5:
DoYourStuff();
break;
}
答案 4 :(得分:1)
我有两种方法可以想到。
或所有比较。
if (someInt == 1 || someInt == 2 || someInt == 4 || someInt == 5) {
}
或者,对于更灵活的解决方案,请查看someInt是否在数组中。
if (Array.BinarySearch(new[] { 1, 2, 4, 5 }, someInt ) != -1) {
}
答案 5 :(得分:0)
你不能这样做。而是使用:
if(someInt == 1 || someInt == 2 || someInt == 4 || someInt == 5)
或者你也可以使用这样的东西:
if((new List<int>() {1,2,4,5}).Contains(someInt) == true)