原文:http://weblogs.asp.net/pawanmishra/iequatable-t-interface-in-net
泛型方法:
public static bool AreEqual<T>(T instance1, T instance2)
{
return instance1.Equals(instance2);
}
通过观察生成的IL代码可以看到,调用的是Object的equals方法,会发生“装箱”操作,设想有多个值类型的参数这个过程会造成性能损失。
为了避免“装箱”,我们可以添加一个显式的约束
public static bool AreEqual<T>(T instance1, T instance2) where T : IEquatable<T>
{
return instance1.Equals(instance2);
}