我喜欢C#,但我希望它能够在类上定义自己的运算符,例如A => B而不是必须做A.Implies(B)。我认为,如果您可以将[+ - * /& ^ |%$#@><] +等集合中的任意长度的标识符分配给类方法,然后像运算符一样使用它,那将会非常酷。有人知道是否有某种延伸,或者甚至可能做出一个,这样做吗?
答案 0 :(得分:10)
这不是语言的内置。您不得不重载语言附带的预定义运算符(overloadable operators)。
如果您喜欢这种调试方式,可能需要考虑F#。它是一种在.NET框架上运行的函数式语言,使您能够定义所需的任何运算符。
答案 1 :(得分:3)
可以重载的运算符列表是here。
运算符重载只允许您更改运算符的行为,而不是定义新运算符。
虽然A => B
A.Implies(B)
可能听起来很酷,但它会在以后引发问题(在6个月内,当你试图弄清楚代码应该做什么时)。
答案 2 :(得分:0)
简而言之,没有。你必须看另一种语言。您可以重载许多现有运算符,或定义任何其他方法(包括非常方便的扩展方法) - 但您无法在任何变体中定义自定义运算符我知道的C#。
答案 3 :(得分:0)
不,这是不可能的,除非你自己创建类似C#的编译器。
您只能覆盖某些内置运算符,无法创建新运算符,并且无法覆盖lambda运算符(=>)。