繁体   English   中英

如何强制调用接口实现的方法?

[英]How to forcibly call interface implemented method?

考虑到:EqualityComparer.Default属性,用MSDN编写,它具有:

Default属性检查类型T是否实现System.IEquatable接口,如果是,则返回使用该实现的EqualityComparer。 否则,它返回一个EqualityComparer,它使用T提供的Object.Equals和Object.GetHashCode的替代。

我的理解:因为它将返回EqualityComparer“ object”,所以它应该调用T提供的Object.Equals和Object.GetHashCode的重写(如果它重写或Object.Equals和Object.GetHashCode,否则)。 如何称其为IEquatable的实现方法? 它是在强行吗? 如果是,如何? 如果我错了请纠正我。

这是MSDN链接: http : //msdn.microsoft.com/zh-cn/library/ms224763.aspx

首先,在如下的通用类中,实际上无论如何都会选择正确的方法( IEquatable<T> ):

    private class MyEqualityComparer<T> : IEqualityComparer<T> where T : IEquatable<T>
    {
        public bool Equals(T x, T y)
        {
            return x.Equals(y);
        }
        // Hashcode...
    }

而如果将y投射到object ,则引用将是object.Equals 这只是一个重载方法,因此可以在编译时解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM