只是一个基本的if
语句,试图让它更简单易读。现在它写着:
if ( myid == 1 || myid ==2 || myid == 10 || myid == 11 || myid == 12 || myid == 13 || myid ==14 || myid ==15)
{
...
}
我在想int[] ints = [1,2,10,11,12,13,14,15]
,然后是
if (ints.Contains(myid))
{
}
我实际上并不知道这是否更容易阅读,它肯定更短,两者的性能差异可能微不足道。
答案 0 :(得分:5)
问题基于意见,但如果可读性是关键因素,一种选择是使用扩展方法
public static bool In<T>(this T x, params T[] set)
{
return set.Contains(x);
}
允许你写:
if (myid.In(1, 2, 10, 11, 12, 13, 14, 15))
{
}
我会填写其他选项,只是为了给出一些比较感(我当然不会提倡所有下一个选项)
丑陋,但对于一个“连续”序列工作正常:
if ((myid >= 1 && myid <= 2) || (myid >= 10 && myid <= 15))
{
}
您可以定义自己的Between
扩展方法。注意:我总是会忘记minVal或maxVal是包含还是排他。 (例如Random.Next使用minValue包含和maxValue独占):
public static bool Between(this int number, int minVal, int maxVal)
{
return number >= minVal && number <= maxVal;
}
考虑很多better Between扩展方法,这只是一个简单的例子。现在你可以:
if (myid.Between(1, 2) || myid.Between(10, 15))
{
}
或使用原生方法
if (new[]{1, 2, 10, 11, 12, 13, 14, 15}.Contains(myid))
{
}
或者
int[] expectedValues = {1, 2, 10, 11, 12, 13, 14, 15};
if (expectedValues.Contains(myid))
{
}