gpt4 book ai didi

c# - 是否可以为接口(interface)引用定义 == 的行为?

转载 作者:行者123 更新时间:2023-11-30 14:44:34 25 4
gpt4 key购买 nike

如果接口(interface)继承了 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 方法?

最佳答案

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

关于c# - 是否可以为接口(interface)引用定义 == 的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/261809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com