Jav*_*rez 30 .net c# linq resharper lambda
使用ReSharper时会自动添加@,为什么?
public static string RemoveDiacritics(this string input)
{
if (string.IsNullOrEmpty(input)) return input;
var normalizedString = input.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder();
foreach (var value in normalizedString.Select(value =>
new {value, unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(value)})
.Where(@t => @t.unicodeCategory != UnicodeCategory.NonSpacingMark)
.Select(@t => @t.value)) stringBuilder.Append(value);
return (stringBuilder.ToString().Normalize(NormalizationForm.FormC));
}
Run Code Online (Sandbox Code Playgroud)
Joe*_*oel 26
@符号允许您为变量名使用保留关键字.如@class.我认为Resharper这样做是安全的.
在这种情况下,它不是必需的,它没有任何效果.
Eri*_*ert 22
你必须要求resharper实施者确定,但我可以做出有根据的猜测.它们可能是未来的证明.
自C#1.0发布以来,编译器团队已向C#添加了21个新的上下文关键字 ; 当编译器出现在某些位置时,编译器会将这些视为关键字,否则将其视为普通标识符.yield例如,它只是之前出现的关键字return.
当resharper工具为您生成代码时,他们不知道该代码是否将在某些假设的C#6中编译,该C#6 t在某些上下文中用作上下文关键字.因此,他们通过预先调用"此标识符不是上下文关键字",通过放在@它的前面来"设计未来" .
顺便说一句,这正是为什么任何标识符都是合法的为什么是合法的@.
更多信息:
http://ericlippert.com/2009/05/11/reserved-and-contextual-keywords/