gpt4 book ai didi

C# 接口(interface)不能包含运算符

转载 作者:IT王子 更新时间:2023-10-29 04:07:54 26 4
gpt4 key购买 nike

谁能解释一下为什么 C# 接口(interface)不允许包含运算符?

谢谢。

最佳答案

C# operators have to be static .根据定义,接口(interface)适用于实例。没有机制要求类型实现静态成员。

编辑:
从 C# 8.0 开始,如您所见here ,现在可以在接口(interface)中定义本地方法并在接口(interface)本身中实现它们,例如允许创建方法重载而无需实现也关心这些​​重载,当它们可能只是为必须实现的重载提供一个附加参数时。
除此之外,您还可以在接口(interface)内定义运算符,但它们必须是静态的,因此必须在接口(interface)中实现。

因此在 C# 8.0 中,这将打印“this works in C# 8”,后跟“1”:

interface ICanAdd
{
int Value { get; }

public static int operator+ (ICanAdd lvalue, int rvalue)
{
Console.WriteLine("this works in C# 8");
return lvalue.Value + rvalue;
}
}

class Add : ICanAdd
{
public int Value => 0;
}

class Program
{
static void Main(string[] args)
{
ICanAdd foo = new Add();
var x = foo + 1;
Console.WriteLine(x);
}
}

编辑 2020-01-23

不能在接口(interface)中添加转换、相等或不等运算符,否则会出现以下错误:

CS0567 C# Interfaces cannot contain conversion, equality, or inequality operators

关于C# 接口(interface)不能包含运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603940/

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