IEquatable(T) interface in .Net

原文: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);
}

原文地址:https://www.cnblogs.com/goodlucklzq/p/4595532.html