我知道它可能不值得,但仅仅出于教育目的,我想知道是否有办法将自己的关键字注入.NET语言。
例如,我认为在C#中使用C ++ asm关键字是很好的 请记住,我不是在讨论如何实现asm关键字,而是将关键字添加到C#的一般方法。
我想象的代码:
asm{
mov ax,1
add ax,4
}
有没有办法实现这个目标?
涵盖实施keyword{ }
的答案足以满足这个问题。
答案 0 :(得分:4)
目前无法做到这一点。但是,有一个名为Roslyn的开发中的Microsoft项目可以概括为“编译器即服务”。除其他外,它允许您通过API扩展或修改编译器的行为。
当Roslyn可用时,我相信这应该是(谨慎!)非常可行。
答案 1 :(得分:2)
不幸的是,这是不可能的。您无法以任何方式扩展或更改语言。
您可以以一种模糊的方式使用PostSharp来读取和解析字符串,并在编译时将它们转换为自定义代码(预处理器)。但是你不会对此感到非常满意,因为它非常容易出错,你不会为你的魔法字符串获得任何智能感知或代码完成。
答案 2 :(得分:2)
在将代码发送到C#编译器之前,您可以使用任何预先处理代码的工具。例如,您可以使用VS宏进行预处理,将您发明的给定语法映射到 编译成C#代码的内容,如果出现问题可能会生成错误。如果VS宏不够强大,那么你可以随时使用你自己的IDE来做任何你编码的文本,然后再将它发送给编译器。
编译器中没有内置支持来指定您自己的关键字/语法;你需要完全独立于编译器来处理它。
答案 3 :(得分:0)
根据MSDN关键字是预定义的,不能更改。所以你不能添加任何东西,因为你需要告诉编译器如何处理它们。就此而言,不,你不能。