【发布时间】:2015-11-19 05:23:05
【问题描述】:
在c#中有哪些方法可以检查X是否存在于X,Y,Z中?
例如:
X=5;
我想检查 X 的值是否与任何逗号分隔值匹配..
if(x in (2,5,12,14)
【问题讨论】:
在c#中有哪些方法可以检查X是否存在于X,Y,Z中?
例如:
X=5;
我想检查 X 的值是否与任何逗号分隔值匹配..
if(x in (2,5,12,14)
【问题讨论】:
new int[] { 2,5,12,14}.Contains(x);
【讨论】:
if (new int[] { 2,5,12,14}.Contains(5))我会把你的帖子标记为答案。如果我没有得到更好的答案。(我不太可能得到)
List<int> list = new List<int> { 1, 2, 3, 4, 5 };
list.Contains(5);
【讨论】:
您可以使用 .Contains 方法。例如listItems.Contains(x)
【讨论】:
C# 中没有in 运算符,但您可以实现扩展方法以使代码更具可读性。
public static class Ext
{
public static bool In<T>(this T val, params T[] values) where T : struct
{
return values.Contains(val);
}
}
//usage: var exists = num.In(numbers);
【讨论】:
Linq.Contains()你在搜索什么
// Create List with three elements.
var list = new List<string>();
list.Add("cat");
list.Add("dog");
list.Add("moth");
// Search for this element.
if (list.Contains("dog"))
{
Console.WriteLine("dog was found");
}
有两个方法Linq.Contains()方法和一个扩展Linq.Contains<int>
var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// Use extension method.
var stp = new Stopwatch();
stp.Start();
bool a = list.Contains<int>(7);
stp.Stop();
Console.WriteLine("Time in extenstion method {0}", stp.Elapsed);
stp.Restart();
// Use instance method.
bool b = list.Contains(7);
stp.Stop();
Console.WriteLine("Time in normal method {0}", stp.Elapsed);
性能基准:List 类型定义中的特定于 List 的版本,即
list.Contains(7);更快。我用两个 Contains 方法测试了同一个 List。
【讨论】: