zoukankan      html  css  js  c++  java
  • List<T>.Contains(T item)为什么我把两封一样的邮件经分析后一模一样的数据mail_data先后导入进去,第2封信还是会加到mailList里去 ?? 搞不懂..

    方法1:

            static void Main(string[] args)
            {
                TestClass tc1 = new TestClass();
                tc1.i = 1;
                TestClass tc2 = new TestClass();
                tc2.i = 1;
                List<TestClass> list = new List<TestClass>();
                list.Add(tc1);
                Console.WriteLine(list.Contains(tc2));
                Console.WriteLine(list.Contains(tc2, new TestComparer<TestClass>()));
            }
    
            class TestClass
            {
                public int i;
            }
    
            class TestComparer<T> : IEqualityComparer<T>
                where T : TestClass
            {
    
                public int GetHashCode(T obj)
                {
                    return obj.GetHashCode();
                }
    
                public bool Equals(T t1, T t2)
                {
                    return t1.i == t2.i;
                }
            }

    方法2:

    引用类型,需要重载Mail_DATA类的Equals()函数:
    public override bool Equals(System.Object obj)
      {
      // If parameter is null return false.
      if (obj == null)
      {
      return false;
      }
    
      // If parameter cannot be cast to Mail_DATA return false.
      Mail_DATA c = obj as Mail_DATA;
      if ((System.Object)c == null)
      {
      return false;
      }
    
      // Return true if the fields match:
      return (this.属性1== c.属性1) && (this.属性2== c.属性2)&&...;//这里根据需要确定,哪些属性能够确定两个对象equal的列出
      }
  • 相关阅读:
    Redis 客户端
    Redis 数据库
    Redis 对象
    Redis 跳跃表
    Redis 字典
    Redis 链表实现
    Redis 事务
    winform,自定义文本框控件 实现文本框验证加水印功能
    WinForm中,每隔一段时间(参数)调用一次函数(使用定时器)
    GMap.Net 实现离线地图
  • 原文地址:https://www.cnblogs.com/hongjiumu/p/2678862.html
Copyright © 2011-2022 走看看