当前位置:  开发笔记 > 编程语言 > 正文

是否可以为接口引用定义==的行为?

如何解决《是否可以为接口引用定义==的行为?》经验,为你挑选了1个好方法。

如果接口继承IEquatable,则实现类可以定义Equals方法的行为.是否可以定义==操作的行为?

public interface IFoo : IEquatable  
{}  

public class Foo : IFoo  
{  
    // IEquatable.Equals  
    public bool Equals(IFoo other)  
    {  
        // Compare by value here...
    }  
}

通过比较它们的值来检查两个IFoo引用是否相等:

IFoo X = new Foo();  
IFoo Y = new Foo();

if (X.Equals(Y))  
{  
     // Do something  
}

是否有可能if (X == Y)在Foo上使用Equals方法?



1> Jon Skeet..:

否 - 您无法在接口中指定运算符(主要是因为运算符是静态的).编译器确定哪个==的重载基于它们的静态类型调用(即不涉及多态),并且接口不能指定代码来说"返回调用X.Equals(Y)的结果".

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有