public virtual bool Equals(object obj);
public static bool Equals(object objA, object objB);区分它们的用法,第一个用实例调用,第二个用类型名调用(Object.Equals)另外你写的这个TC比较器毫无意义。
public static bool Equals(object objA, object objB);区分它们的用法,第一个用实例调用,第二个用类型名调用(Object.Equals)另外你写的这个TC比较器毫无意义。
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();
}
}
}
{
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");
我也是这么写的为什么会提示错误呢