VB.NET List(of X).Contains 行为

Posted

技术标签:

【中文标题】VB.NET List(of X).Contains 行为【英文标题】:VB.NET List(of X).Contains Behavior 【发布时间】:2010-10-10 09:57:51 【问题描述】:

我有一个自定义类设置为具有两个属性 X 和 Y 的键

我有类似的东西:

Dim test As New List(of TestClass)
Dim key as New TestData

key._a = A
key._b = B

For Each a As TestClass In SomeCollection
  If Not test.Contains(key) Then
     'Do Stuff
  End If
Next

我的问题是:List(of T) 上的 .Contains 的行为如何?它是在寻找相同的数据结构,还是仅仅匹配我的密钥的一个属性?

如果可以,请附上一个链接,我可以在其中查看有关此的一些文档。

编辑 Contains 方法类型安全吗?

【问题讨论】:

“类型安全”的具体含义是什么?整个 .NET 东西类型不安全吗? 【参考方案1】:

它使用Equals 方法来检查身份。

默认情况下(如果没有被覆盖)Equals 返回 true 如果两个引用相同或两个结构在成员上相等。

【讨论】:

【参考方案2】:

我昨天刚问过the same question :)

您的 TestClass 应该实现 IEquatable(of T) http://msdn.microsoft.com/en-us/library/ms131187(VS.80).aspx 接口以使其类型安全

【讨论】:

以上是关于VB.NET List(of X).Contains 行为的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET ArrayList 到 List(Of T) 类型的复制/转换

VB.NET 泛函数 system.collections.generic.list(of textbox) 的使用问题!

查询表中最新一期资产负债率 ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause and contain

如何销毁 List Of(T),重新分配列表使用的内存

利用传入的泛型建立并回传泛型清单(List(Of T))

contain_of宏定义