List.Contains在对象比较时失败

电脑使用者

我有一个类“ Class1”,在.NET 2.0中具有字符串变量“ sText”。我已经创建了该类“ lstClass1”的对象列表。设置其字符串变量后,它将存储该类的许多对象。

完整的代码是:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (!lstClass1.Contains(new Class1("text1")))
            lstClass1.Add(new Class1("text1"));
    }

    public List<Class1> lstClass1 = new List<Class1>();
}

public class Class1
{
    public Class1(string sText)
    {
        this.sText = sText;
    }

    public string sText = "";
}

现在,问题是我只想添加具有带有唯一文本值的字符串的类对象。例如,如果lstClass1已经具有字符串变量值“ text1”的对象,则它不应允许添加也具有“ text1”的对象。所以,我写了代码:

if (!lstClass1.Contains(new Class1("text1")))
    lstClass1.Add(new Class1("text1"));

但是,即使列表中已经存在带有“ text1”字符串的对象,也始终允许添加文本“ text1”。我的假设是,在第一个按钮单击事件“ button1_Click”上将添加对象,因为列表为空,但是在下一个按钮上单击List.Contains函数将检查列表中是否已存在带有字符串变量“ text1”的对象,并且如果找到,则不会添加。但是,即使列表中已经存在对象,也始终允许添加带有文本“ text1”的对象。

请注意:我没有采用简单的字符串列表或字符串形式,因为我想以简单的方式解释我的列表,类和对象的大问题。

PawełBejger

使用Any()方法:

if (!lstClass1.Any(x => x.sText == "text1"))
    lstClass1.Add(new Class1("text1"));

这段代码:

if (!lstClass1.Contains(new Class1("text1")))
    lstClass1.Add(new Class1("text1"));

仅当您提供Equals()GetHashCode()方法Class1以允许在此类的两个对象之间进行比较时,该方法才有效。为此,您的类应实现IEquatable接口。所以您的Class1可能看起来像这样:

public class Class1 : IEquatable<Class1>
{
    public Class1(string sText)
    {
        this.sText = sText;
    }

    public string sText = "";

    public bool Equals(Class1 other) 
    {
      if (other == null) 
         return false;

      if (this.sText == other.sText)
         return true;
      else
         return false;
    }

    public override int GetHashCode()
    {
      return this.sText.GetHashCode();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

List.Contains在对象比较时失败

来自分类Dev

.equals()工作时List.contains()失败

来自分类Dev

如何使用JPA在对象内持久保存Collections / List

来自分类Dev

在对象的std :: list中快速搜索和删除

来自分类Dev

SQL Server中存在对象锁时失败

来自分类Dev

SQL Server中存在对象锁时失败

来自分类Dev

Django List Comprehension-比较日期时间对象时遇到问题。TypeError:不可排序的类型:datetime.date()<= str()

来自分类Dev

使用List对象时.last的补充方法?

来自分类Dev

使用比较器对指向对象的指针的std :: list进行排序

来自分类Dev

比较两个自定义LIST对象

来自分类Dev

Java的List.contains双用宽容的对象

来自分类Dev

为什么<list>元素会使用malloc()中的内存在对象中导致分段错误

来自分类Dev

T 实现 IEquatable 时如何比较 2 List<T>?

来自分类Dev

如何比较2个List <string>对象以从List <string>获取缺少的值

来自分类Dev

在对象中使用比较器

来自分类Dev

当元素存在时List.Contains不返回true

来自分类Dev

List <?>是List <Integer>和List <Number>的共同父对象吗?

来自分类Dev

如何从List <>访问对象

来自分类Dev

为什么list.Contains(x)在list包含x,y,z时找不到x

来自分类Dev

测量速度时List.Contains和List.IndexOf的行为不一致

来自分类Dev

比较ArrayList和contains对象

来自分类Dev

filter a List according to multiple contains

来自分类Dev

List(1)#contains()返回false

来自分类Dev

如何在GWT中对List <int []>进行排序?使用自定义比较器失败

来自分类Dev

C#对象比较失败

来自分类Dev

当涉及类型参数时,不能将List <List <?>>分配给List <List <?>>

来自分类Dev

将List对象强制转换为扩展List的新对象

来自分类Dev

Arraylist或List中的Java对象

来自分类Dev

如何排序List [Int]对象?

Related 相关文章

  1. 1

    List.Contains在对象比较时失败

  2. 2

    .equals()工作时List.contains()失败

  3. 3

    如何使用JPA在对象内持久保存Collections / List

  4. 4

    在对象的std :: list中快速搜索和删除

  5. 5

    SQL Server中存在对象锁时失败

  6. 6

    SQL Server中存在对象锁时失败

  7. 7

    Django List Comprehension-比较日期时间对象时遇到问题。TypeError:不可排序的类型:datetime.date()<= str()

  8. 8

    使用List对象时.last的补充方法?

  9. 9

    使用比较器对指向对象的指针的std :: list进行排序

  10. 10

    比较两个自定义LIST对象

  11. 11

    Java的List.contains双用宽容的对象

  12. 12

    为什么<list>元素会使用malloc()中的内存在对象中导致分段错误

  13. 13

    T 实现 IEquatable 时如何比较 2 List<T>?

  14. 14

    如何比较2个List <string>对象以从List <string>获取缺少的值

  15. 15

    在对象中使用比较器

  16. 16

    当元素存在时List.Contains不返回true

  17. 17

    List <?>是List <Integer>和List <Number>的共同父对象吗?

  18. 18

    如何从List <>访问对象

  19. 19

    为什么list.Contains(x)在list包含x,y,z时找不到x

  20. 20

    测量速度时List.Contains和List.IndexOf的行为不一致

  21. 21

    比较ArrayList和contains对象

  22. 22

    filter a List according to multiple contains

  23. 23

    List(1)#contains()返回false

  24. 24

    如何在GWT中对List <int []>进行排序?使用自定义比较器失败

  25. 25

    C#对象比较失败

  26. 26

    当涉及类型参数时,不能将List <List <?>>分配给List <List <?>>

  27. 27

    将List对象强制转换为扩展List的新对象

  28. 28

    Arraylist或List中的Java对象

  29. 29

    如何排序List [Int]对象?

热门标签

归档