C#馅饼标志

DxC*_*xCK 10 .net c# syntax keyword

在C#中编码时,我错误地在if语句中的变量之前添加了一个结构符号(而不是感叹号).

bool b = false;
if (@b)
{

}
Run Code Online (Sandbox Code Playgroud)

我很惊讶它成功编译没有任何错误.

我想知道:上面代码的含义是什么?

Jon*_*eet 18

@如果你想使用关键字,可以用来"转义"标识符.例如:

int @class = 10;
Run Code Online (Sandbox Code Playgroud)

当然,使用关键字作为标识符通常是一个坏主意,但如果您使用的是正好使用它们的类库,则很难避免.它也可以是有时很有用"@this"为您想的情况下有效地有一个this参考,但不管是什么原因,你不能用一个.(这些很少,而且很远,但我已经看过几次了,至少值得知道.)

  • 非常令人印象深刻,Skeet,但你对馅饼有什么了解?嗯?:d (2认同)

Dre*_*kes 11

乔恩的答案总结了一下.必须使用这种转义技术的示例是在ASP.NET MVC中将匿名类型的HTML属性指定为辅助方法.

Html.ActionLink("text", "action", "controller",
    new { @class = "some-css-class" }, null);
Run Code Online (Sandbox Code Playgroud)

在编写使用JSON编码通过HTTP发布的匿名类型时,我也遇到了这种情况,您无法修改远程API.

"馅饼"的+1也是:)