首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# List.Contains确实在应该返回true的时候返回了true

C# List.Contains方法用于检查列表中是否包含指定的元素。当使用List.Contains方法时,如果应该返回true的情况下返回了false,可能有以下几种原因:

  1. 数据类型不匹配:List.Contains方法是根据元素的Equals方法来判断是否相等的。如果列表中的元素类型与要查找的元素类型不匹配,可能会导致判断错误。请确保要查找的元素与列表中的元素类型一致。
  2. Equals方法未正确重写:如果列表中的元素是自定义类型,需要确保该类型的Equals方法已正确重写。Equals方法的默认实现是比较对象的引用,而不是比较对象的值。如果Equals方法未正确重写,可能导致List.Contains方法判断错误。
  3. 列表中的元素顺序问题:List.Contains方法是按照列表中元素的顺序进行查找的。如果要查找的元素在列表中存在,但是顺序不一致,可能导致判断错误。请确保要查找的元素在列表中的正确位置。
  4. 元素比较规则问题:List.Contains方法默认使用元素的默认比较规则进行判断。如果要查找的元素与列表中的元素的比较规则不同,可能导致判断错误。可以使用List.Contains方法的重载版本,传入自定义的比较器来解决该问题。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)是一种可弹性伸缩的云计算服务,提供高性能、可靠稳定的云服务器实例,可满足各类应用的需求。您可以通过腾讯云云服务器搭建自己的开发环境,进行C#开发和测试工作。

腾讯云产品介绍链接地址:腾讯云云服务器(CVM)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

listcontains方法

list.contains(us)) list.add(us); } } 首先我们将ListA中对象全部装入到list中,然后在装入ListB中对象 时候对ListB中每个元素进行一下判断...,看list中是否已存在该元素,这里我们使用List接口contains()方法,下面来看一下他原理: list.contains(us),系统会对list中每个元素e调用us.equals(e...),方法,加入list中有n个元素,那么会调用n次us.equals(e),只要有一次us.equals(e)返回了true,那么list.contains(us)返回true,否则返回false。...: public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false...=other.getId()) return false; return true; } 这样只要ListB中有一条记录Id和list中某条记录Id 相等,那么我们就认为该记录已存在,

1.4K30

假象

今天写一下C#“==”这个操作符。 原始类型 假象 在刚学C#时候,我以为C#==和.NET里object.Equals()方法是一样,就是一个语法糖而已。...而tp1.Equals(tp2)返回True,这是因为Tuple类(引用类型)重写了object.Equals()方法,从而比较是Tuple里面的值。...但是我做一下小小改动: 我们看看结果会不会变: 结果发生了变化,str1==str2这次返回了False。...我们使用以下该方法: 按理说这就相当于调用了Equals()方法,结果应该返回True。...而实际结果是: 之所以返回了False,是因为泛型方法里==操作符比较是引用,而这又是因为尽管编译器知道可以把==操作符应用于类型T,但是它仍然不知道具体是哪个类型T会重载该操作符,所以它会假设T

26210

C#相等性 - “==”

今天写一下C#“==”这个操作符。 原始类型 假象 在刚学C#时候,我以为C#==和.NET里object.Equals()方法是一样,就是一个语法糖而已。...在C#里,当你定义一个类型时候,你可以对==操作符进行重载,格式大概如下: ?...结果发生了变化,str1==str2这次返回了False。 这是因为==操作符不是virtual,它相当于是static,而static是无法virtual。...按理说这就相当于调用了Equals()方法,结果应该返回True。而实际结果是: ?...之所以返回了False,是因为泛型方法里==操作符比较是引用,而这又是因为尽管编译器知道可以把==操作符应用于类型T,但是它仍然不知道具体是哪个类型T会重载该操作符,所以它会假设T不会重载==操作符

71320

《Effective Java》读书笔记(二)之对于所有对象都通用方法

第八条 在改写equals时候请遵守通用约定 一般以下几种情况,不适宜覆盖equals方法 1.类每个实例本质上都是唯一,对于代表活动实体而不是值类确实如此,例如Thread. 2.不关心类是否提供了...那什么情况应该覆盖Object.equals呢?...equals改写规范: 1)自反性:对于任何非null引用值x,x.equals(x)一定为true 2)对称性:对于任何非null引用值x和y,当且仅当x.dquals(y)为true;..."); String s = "test"; 此时cis.equals(s)会返回true,CaseInsensitiveString 类中做了兼容大小写处理,但是String equals...> list = new ArrayList(); list.add(cis); list.contains(s); list.contains(s)有可能返回true

28210

C#类型基础

); // 输出true 因为它们均继承自ValueType类型,所以此时会调用ValueType上Equals()方法,在方法体内部,#5 CanCompareBits(this) 返回了...true,CanCompareBits(this)这个方法,按微软注释,意识是说:如果对象成员中存在对于堆上引用,那么返回false,如果不存在,返回true。...按照ValPoint定义,它仅包含一个int类型字段x,自然不存在对堆上其他对象引用,所以返回了true。...从#5 名字CanCompareBits,可以看出是判断是否可以进行按位比较,那么返回了true以后,#6 自然是进行按位比较了。...再次进入 ValueType Equals() 方法,因为 ValPoint 为简单值类型,所以 #5 CanCompareBits 返回了true,接着 #6 FastEqualsCheck 返回了

85430

【查虫日志】快速判断一副灰度图像中是否只有黑色和白色值(即是否为二值图像)过程中bool变量是是非非。

二值图像我们在图像处理过程中是经常遇到,有的时候我们在进行一个算法处理前,需要判断下一副图像数据是否符合二值图需求,这个时候我们可以写个简单函数来做个判断,比如我写了一个很简单代码如下:...; }   即如果存在一个像素如果不为255,也不为0,则这副图就不是二值图,立即可以返回了,而无需进行后续判断了。     ...我们判断这个像素是否等于255和0,当然,一个像素不可能同时满足这两个条件,不满足Mask返回0,满足则Mask返回255,所以如果他是黑色和白色,你们这两个Mask进行或操作肯定就为255,否则或操作后就为...但是,我觉得代码片段2应该是不会有任何错误啊。为什么会出现这种现象呢。   ...但是,当我们把这些函数返回值都改为int后,在C#中调用就正常了,比如: int IM_IsBinaryImage_C(unsigned char *Src, int Width, int Height

68920

Java中String类应该注意一些地方

这个思想应该是享元模式思想,但JDK内部在这里实现是否应用了这个模式,不得而知。    ...(4)由于String类immutable性质,当String变量需要经常变换其值时,应该考虑使用StringBuffer类,以提高程序效率。...false true     Java 和 C#字符串类型行为相似,只有细微差异。...两种字符串类型都是不可变,意味着一旦创建了字符串,字符串值就无法更改。两个实例中方法看上去修改了字符串实际内容,实际上创建并返回了一个新字符串,而原始字符串保持不变。...在 C# 中,开发人员可以直接使用 == 或 != 运算符来比较字符串值。尽管在 C# 中字符串是引用类型,但在默认情况下 == 和 != 运算符将比较字符串值而不是引用。

50010

【C++静态私有字段】+【C# .cctor】+【C++ if(条件断点)】

分别为标题标注:C++静态私有字段访问,C#全局静态构造函数.cctor,以及C++ if(延伸条件断点)。这其中两个C++问题,分别对应C#分析下。...aa@AAA@@0V1@A) 然C#对于静态私有字段访问,如下即可,不需要全局设置其值。如果以C#写法应用在C++上,这是一个坑,需要注意。不得不说在面向对象方面,C#爽点还是满满。...一般来说if括号里面是true或者false,但是这里if括号里面显然是字符串,它也被if视为true进行了分支执行。...返回了字符串,就视为true。...而字符串只能返回,所以当JIT CompilepMDm_pszDebugClassName是时候就可以断下来了。

5210

PQ-M及函数:文本中按给定列表保留所需字符内容

文章中方法,但发现里面的List.Select函数判断都是针对连续字符,所以用了each _>”A”and _<”z”判断条件,问题是,有时候要保留内容可能不是这种连续,比如保留英文和横杠...比如给了一个需要保留列表,甚至可能是动态,然后判断每个元素是不是属于要保留列表中元素? 大海:嗯,其实你能想到这个就可以去查阅函数帮助了,其中有个函数叫List.Contains。...在这里写法如下,公式: =Text.Combine( List.Select( Text.ToList([公司]), each List.Contains(...z","-"}, _ ) ) ) 函数List.Contains,判断列表中是否包含某元素,也就是某个元素是否在列表中。...用法: List.Contains(列表,值) 参数: 列表:需要判断列表 值:用于判断列表中是否包含元素 小栗子: List.Contains({1,3,5},3) 结果:True 小勤:这个函数好

52430

自定义值类型一定不要忘了重写Equals,否则性能和空间双双堪忧

看代码应该是 equals 比较时产生,一次比较就有2个point被装箱放到托管堆上,这下惨了,,,而且大家应该知道引用对象本身还有(8+8) byte 自带开销,这在时间和空间上都是巨大浪费呀。。...遇到问题 很多时候我们会定义各种泛型类,在泛型操作中通常会涉及到T之间 equals, 比如下面我设计一段代码,为了方便,我把Point默认Equals也重写一下。...从输出结果看,还是走了通用equals方法,这就尴尬了,为什么会这样呢? 2. 从FCL值类型实现上寻找问题 有时候苦思冥想找不出问题,突然灵光一现,FCL中不也有一些自定义值类型吗?...应该。。。就是这个泛型equals是用来解决泛型情况下equals比较。 3....因为这里runtimeType实现了IEquatable接口,所以代码返回了一个泛型比较器:GenericEqualityComparer,然后我们继续查看这个泛型比较器是咋样。 ?

32120

C#闭包和意想不到

虽然闭包主要是函数式编程玩意儿,而C#最主要特征是面向对象,但是利用委托或lambda表达式,C#也可以写出具有函数式编程风味代码。...但是仔细观察会发现,当Action对象被调用时候,CreateGreeting方法已经返回了,作为它实参message应该已经被销毁了,那么为什么我们在调用Action对象时候,还是能够得到正确结果呢...虽然CreateGreeting已经返回了,但是它局部变量被返回lambda表达式所捕获,延迟了其生命周期。怎么样,这样再回头看闭包定义,是不是更清楚了一些?...看看结果 相信很多人看到这个结果表情是这样!!难道不应该是0,1,2,3,4吗?出了什么问题?...至少在C# 7.0 版本上面,这个问题已经被注意到了,使用foreach时候编译器会自动生成代码绕过这个闭包陷阱。

31810

一次Unexpected end of stream异常排查

带着这个问题,我们查了下Redis相关文档,确实在默认情况下Redis是这么约束,quit之后返回一个 RST包。...按照常理当连接不需要在使用时候应该关闭连接,这种情况不是应该是我们理解"TCP4次挥手"来进行这个连接告别(关闭)仪式吗? ? 为什么Redis连接关闭使用"RST"?...我们根据堆栈抛出时间具体查看对应RST包后发现,这种RST情况与上面的不一致,这一次客户端发送并不是 "quit" 数据,而Redis确返回了 RST。 ?...我们设定一个场景来推演: 并发10次使用Pool操作Redis 当操作完成后Pool中应该还有8个空闲连接(最大连接空闲数为8,所以这边不是10) 当5分钟过后再次进行并发10次Redis操作 应该会出现...关于TCP 可以发现,TCP协议"一厢情愿"总会出问题,更多时候得"你知我知"才能正常使用。 TCP协议是真的很复杂一个通信协议,不单单是三次握手4次挥手这么简单内容。

1.2K10

一次Unexpected end of stream异常排查

带着这个问题,我们查了下Redis相关文档,确实在默认情况下Redis是这么约束,quit之后返回一个RST包。...按照常理当连接不需要在使用时候应该关闭连接,这种情况不是应该是我们理解"TCP4次挥手"来进行这个连接告别(关闭)仪式吗? image.png 为什么Redis连接关闭使用"RST"?...我们根据堆栈抛出时间具体查看对应RST包后发现,这种RST情况与上面的不一致,这一次客户端发送并不是 "quit" 数据,而Redis确返回了 RST。...我们设定一个场景来推演: 并发10次使用Pool操作Redis 当操作完成后Pool中应该还有8个空闲连接(最大连接空闲数为8,所以这边不是10) 当5分钟过后再次进行并发10次Redis操作 应该会出现...关于TCP 可以发现,TCP协议"一厢情愿"总会出问题,更多时候得"你知我知"才能正常使用。 TCP协议是真的很复杂一个通信协议,不单单是三次握手4次挥手这么简单内容。

5.5K30
领券