C#的List的Contains方法 list的Contains方法是根据其元素类型定义的Equals方法来判断是否重复的
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#的List的Contains方法 list的Contains方法是根据其元素类型定义的Equals方法来判断是否重复的,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2288字,纯文字阅读大概需要4分钟。
内容图文
![C#的List的Contains方法 list的Contains方法是根据其元素类型定义的Equals方法来判断是否重复的](/upload/InfoBanner/zyjiaocheng/596/7b98a59a2c814fc99cfb0482153b6da4.jpg)
https://zhidao.baidu.com/question/681553612286124812.html
如果有类A和类B都继承了类C,类A已经存入到集合中了,那么此时用该方法判断类B,是会返回true还是false?
你的类和List如何定义的?
我测试是返回false,定义如下:
public class C { }
public class A:C { }
public class B:C { }
private void button1_Click(object sender,EventArgs e)
{
A a=new A();
B b=new B();
C c=new C();
List
lst.Add(a);
if(lst.Contains(b))
MessageBox.Show("true!");
else
MessageBox.Show("false!");
}
结果:
false!
list的Contains方法是根据其元素类型定义的Equals方法来判断是否重复的。因为是实例方法,所以与继承几乎没关系。看示例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | ???? class Program ???? { ???????? static void Main( string []?args) ???????? { ???????????? List<A>?As?=? new List<A>() ???????????? { ???????????????? new A(1,2) ???????????? }; ???????????? A?a1?=? new A(1,?22); ???????????? Console.WriteLine(As.Contains(a1)); //false ???????????? A?a2?=? new A(11,?2); ???????????? Console.WriteLine(As.Contains(a2)); //false ???????????? //你自己对比上下区别 ???????????? List<B>?Bs?=? new List<B>() ???????????? { ???????????????? new B(1,2) ???????????? }; ???????????? B?b1?=? new B(1,?22); ???????????? Console.WriteLine(Bs.Contains(b1)); //true ???????????? B?b2?=? new B(11,?2); ???????????? Console.WriteLine(Bs.Contains(b2)); //true ???????????? Console.ReadLine(); ???????? } ???? } ???? class A ???? { ???????? public int a; ???????? public int b; ???????? public A( int a,? int b) ???????? { ???????????? this .a?=?a; ???????????? this .b?=?b; ???????? } ???????? public override bool Equals( object obj) ???????? { ???????????? if (obj?==? null ) ???????????????? return false ; ???????????? if (obj.GetType()?!=? typeof (A)) ???????????????? return false ; ???????????? A?c?=?obj? as A; ???????????? return ( this .a?==?c.a?&&? this .b?==?c.b); ???????? } ???? } ???? class B ???? { ???????? public int a; ???????? public int b; ???????? public B( int a,? int b) ???????? { ???????????? this .a?=?a; ???????????? this .b?=?b; ???????? } ???????? public override bool Equals( object obj) ???????? { ???????????? if (obj?==? null ) ???????????????? return false ; ???????????? if (obj.GetType()?!=? typeof (B)) ???????????????? return false ; ???????????? B?c?=?obj? as B; ???????????? return ( this .a?==?c.a?||? this .b?==?c.b); ???????? } ???? } |
内容总结
以上是互联网集市为您收集整理的C#的List的Contains方法 list的Contains方法是根据其元素类型定义的Equals方法来判断是否重复的全部内容,希望文章能够帮你解决C#的List的Contains方法 list的Contains方法是根据其元素类型定义的Equals方法来判断是否重复的所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。