首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在c#中创建新的运算符?

是否可以在c#中创建新的运算符?
EN

Stack Overflow用户
提问于 2009-06-24 18:32:23
回答 7查看 27.6K关注 0票数 64

我知道你可以重载现有的运算符。我想知道是否可以创建一个新的运算符。这是我的场景。

我想要的是:

代码语言:javascript
复制
var x = (y < z) ? y : z;

等同于这个:

代码语言:javascript
复制
var x = y <? z;

换句话说,我想创建我自己的<?操作符。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-24 18:33:46

不,这不可能。相反,您需要创建一个方法

票数 43
EN

Stack Overflow用户

发布于 2009-06-24 18:35:37

不能,但您可以在C#中重载some existing operators

在其他一些语言中,如F#,您可以使用:

代码语言:javascript
复制
let (<?) = min
票数 31
EN

Stack Overflow用户

发布于 2009-06-24 18:47:54

正如其他答案所说,您不能创建新的运算符-至少,如果不更改编译器中内置的词法分析器和解析器。基本上,编译器被构建为识别单个字符(如<? )或一对字符(如>><= )是运算符,并对其进行特殊处理;例如,它知道i<5是一个表达式而不是变量名。将操作符识别为操作符是一个独立于决定操作符实际做什么的过程,并且与编译器紧密集成-这就是为什么您可以自定义后者而不是前者的原因。

对于具有开放源码编译器的语言(如GCC),理论上可以修改编译器以识别新运算符。但这并不是特别容易,而且每个人都需要你的自定义编译器来使用你的代码。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1040114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档