C#中如何检查列表是否包含指定Tuple(元组)?
解决C#中列表检查Tuple是否存在的问题
你写的两段代码都存在语法错误,导致判断逻辑失效:
- 第一段代码里,创建Tuple实例时缺少
new关键字,C#中实例化Tuple必须用new调用构造函数 - 第二段代码的语法完全不符合C#规范,参数传递方式错误
正确的写法
修正语法,给Tuple实例添加new关键字即可:
if (!combinations.Contains(new Tuple<char, char>(s[i], chr))) { combinations.Add(new Tuple<char, char>(s[i], chr)); }
优化建议
可以先创建一次Tuple实例,避免重复构造相同对象,提升效率:
var targetTuple = new Tuple<char, char>(s[i], chr); if (!combinations.Contains(targetTuple)) { combinations.Add(targetTuple); }
补充说明
C#中的Tuple<T1,T2>默认基于值进行相等性判断,只要两个元组的Item1和Item2分别相等,Contains方法就会识别为重复元素,所以修正语法后这个判断逻辑就能正常工作。
内容的提问来源于stack exchange,提问作者Dom Y
相关产品推荐
相关产品推荐

