public virtual bool Equals(object obj);
public static bool Equals(object objA, object objB);区分它们的用法,第一个用实例调用,第二个用类型名调用(Object.Equals)另外你写的这个TC比较器毫无意义。

解决方案 »

  1.   

    书上写这个 IEqualityComparer接口时没有加泛型类型VS上却有,要求一定要输入该接口的泛型类型
      

  2.   

    按书上写的怎么一直提示错误《错误 1 无法使用实例引用来访问成员“object.Equals(object, object)”;请改用类型名来限定它》
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace TUPLE1
    {
        class Program
        {
          
                  static void Main(string[] args)
            {
              
               System.Tuple<int,string> a=Tuple.Create<int,string>(1,"ff");
               System.Tuple<int, string> b = Tuple.Create<int, string>(1, "ff");
               if (a.Equals(b, new TC()))
                   Console.WriteLine("Equals using TC");
            }    }
        class TC : IEqualityComparer
        {
            public new bool Equals(object x,object y)
            {
             
                return x.Equals(y);
            }
            public int GetHashCode(object  obj)
            {
                return obj.GetHashCode();
            }
        }
    }
      

  3.   

    书上这么说可以使用类TupleComparer创建一个自定义的IEqualityComparer,如下所示。这个类实现了IEqualityComparer接口的两个方法Equals()和GetHashCode(): class TupleComparer : IEqualityComparer
        {
            public new bool Equals(object x,object y)
            {
             
                return x.Equals(y);
            }
            public int GetHashCode(object  obj)
            {
                return obj.GetHashCode();
            }
        }
    使用TupleComparer,给Tuple<T1,T2>类的Equals()方法传递一个新实例。Tuple类的Equals()方法为要比较的每一项调用TupleComparer的Equals()方法。所以,对于Tuple<T1,T2>类,要调用两次TupleComparer,以检查所有项是否相等:
    if(t1.Equals(t2,new TupleComparer()))
    Console.WriteLine("equals using TupleComparer");
    我也是这么写的为什么会提示错误呢