C# 具有的Asp.net mvc显示名称属性@

C# 具有的Asp.net mvc显示名称属性@,c#,asp.net-mvc,attributes,C#,Asp.net Mvc,Attributes,我为我的asp.net mvc应用程序使用resharper来格式化代码,它使用@in DisplayName属性更改了我的所有代码。我试着在谷歌上搜索这个,看看@在这里做了什么,但我找不到满意的搜索结果。请告诉我在displayname属性中使用@out和不使用@out的区别 [DisplayName("Meeting Date")] [DisplayName(@"Meeting Date")] 在属性中执行此操作的事实无关紧要。在字符串文字前面使用“@”字符称为逐字字符串,会导致忽略任何转

我为我的asp.net mvc应用程序使用resharper来格式化代码,它使用@in DisplayName属性更改了我的所有代码。我试着在谷歌上搜索这个,看看@在这里做了什么,但我找不到满意的搜索结果。请告诉我在displayname属性中使用@out和不使用@out的区别

[DisplayName("Meeting Date")]
[DisplayName(@"Meeting Date")]

在属性中执行此操作的事实无关紧要。在字符串文字前面使用“@”字符称为逐字字符串,会导致忽略任何转义序列,从而可以执行以下操作:

var filename = @"C:\Filename.ext"
与此相反:

var filename = "C:\\Filename.ext"
很多人喜欢它,因为它更漂亮。Resharper喜欢将“@”符号放在字符串文本前面

我记得Resharper建议您要么将可本地化字符串移动到资源文件中,要么使其逐字显示。在您的例子中,看起来您接受了(显式地或通过代码清理)逐字生成字符串的建议。您可以在Resharper-->选项-->代码编辑-->C#-->上下文操作-->转换为逐字字符串下关闭逐字字符串建议

实际上,我不知道为什么ReSharper会检测到一个属性构造函数值是可本地化的,因为它们必须是编译时常量,所以它可能是基于其他条件检测到的。一封快速发送的电子邮件应该能很快帮你解决问题

注意:也可以在保留字前面使用“@”符号,以便将其用作变量名,但上述示例中并非如此:

var @string = "string";

它不修改属性,而是修改字符串的解释方式
@
表示不转义字符串中的字符。在您展示的特定示例中,它不会有任何区别,但它允许您在字符串中使用反斜杠。还应该提到的是,除了忽略转义序列并允许使用保留字外,它还允许您在不串联的情况下跨多行。@Justin,从技术上讲,这属于允许通常需要用\转义的字符的范畴。在这种情况下,它将允许在字符串中使用文字换行符,而不是通常的换行符。