C#中@符号对变量的作用?移除参数@为何仍正常运行?
C#中@符号对变量/标识符的作用
@符号在C#里是标识符转义符,主要有这几个用途:
- 让你能用C#的保留关键字当变量/参数名:比如想定义一个叫
@int或者@class的变量,直接写int或class会触发语法错误,加@就能绕开这个限制。 - 支持带空格的标识符:像
@user name这种写法,正常变量名不允许有空格,加@后就合法了(但这种写法非常不推荐,会严重降低代码可读性)。 - 注意:@只是编译时的语法标记,编译完成后会被丢弃,也就是说
@EndingID和EndingID在编译后的IL代码里是同一个标识符。
关于你那两段代码的区别
这两段代码没有任何功能上的区别,运行时表现完全一致。
你之前写的@EndingID里的@其实是多余的——因为EndingID根本不是C#的保留关键字,加不加@编译器都会把它当作普通参数名处理。这也是为什么移除@后代码依然能正常运行的原因,生产环境多年稳定运行也印证了这一点。
内容的提问来源于stack exchange,提问作者Lucky Lindy
相关产品推荐
相关产品推荐

