我有以下代码:
List<List<int>> list = new List<List<int>>();
list.Add(new List<int> { 0, 1 });
if (list.Contains(new List<int> { 0, 1 })) // false
...
Run Code Online (Sandbox Code Playgroud)
我正在尝试检查列表是否包含{0,1},但条件是假的(我不知道为什么,可能是因为'new'关键字).如果这不是正确的方法,我想知道如何检查.
谢谢!
SLa*_*aks 22
List<T>.Contains调用Equals()方法来比较对象.
由于内部List<T>不会覆盖Equals,因此您将获得引用相等性.
您可以通过创建IEqualityComparer<List<T>>按值进行比较并将其传递给的自定义来解决此问题Contains().
您也可以使用LINQ:
if (list.Any(o => o.SequenceEqual(new[] { 0, 1 }))
Run Code Online (Sandbox Code Playgroud)