我有一个IF条件,
IF (this.Something.GID == 1)
{
Something = "something";
}
除了 1 之外,我还想再添加一个选项,我想说
IF (this.Something.GID **is 1 or 2**)
{
Something = "something";
}
我该如何在 C# 中做到这一点?
我有一个IF条件,
IF (this.Something.GID == 1)
{
Something = "something";
}
除了 1 之外,我还想再添加一个选项,我想说
IF (this.Something.GID **is 1 or 2**)
{
Something = "something";
}
我该如何在 C# 中做到这一点?
您可以使用数组和Contains
:
var items = new int[] {1, 2};
if(items.Contains(this.something.GID))
{
}
如果您在本地执行代码(没有转换为 SQL 的 O/R LINQ),aHashSet
可能在大量数据上执行得更好:
var items = new HashSet<int>();
items.Add(1);
items.Add(2);
// equivalent one-liner, thanks to Eren
// var items = new HashSet<int> { 1, 2 }
if(items.Contains(this.something.GID))
{
}
如果您在编译时知道所有元素,并且它们属于switch
支持类型,例如int
or string
,那么您应该使用 Marc 的方法switch
。
关于使用Contains
正如我在评论中所读到的,进一步解释我的代码可能会有所帮助。基本上,代码以相反的方式解决了您的问题:而不是检查 if a
is either b
,c
或者 d
它检查集合是否{b, c, d}
包含 a
(这是等效的)。
在数组和HashSet
数组和 aHashSet
是对这个问题有用的两种不同的实现。通常,您可以比在数组中HashSet
更快地找到元素。
数组执行线性搜索,它遍历每个元素并检查它是否是想要的元素(努力与数组的长度成线性关系)。AHashSet
也存储在数组中的元素。但是,当您搜索一个元素时,它会从想要的元素中计算出一个整数散列,并检查其内部数组中的单个元素是否是想要的元素(不断努力)。hash % array_length
您可以查看Hash table上的 Wikipedia articla 以了解更多详细信息(相当多的阅读,但非常有趣)。
你可以使用这样的开关 :
switch (this.Something.GID)
{
case 1:
case 2:
case 3:
Something = "something";
break;
}
if (this.Something.GID == 1 || this.Something.GID == 2 )
{
Something = "something";
}
最好从一些 C# 初学者书籍/教程开始。
您可以在此使用||
和&&
。
if ((this.Something.GID == 1) || (this.Something.GID == 2))
{
Something = "something";
}
if( (new int[]{1, 2, 3, 4}).Any(x => x == 3) )
{
Something = "...";