在C#中,“@”符号有什么作用?

时间:2010-12-02 14:15:56

标签: c#

  

可能重复:
  What's the @ in front of a string for .NET?

有时我看到示例代码,会有一个“@”符号和字符串。 例如:

    EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
    entityBuilder.Provider = "System.Data.SqlServerCe.3.5";
    entityBuilder.ProviderConnectionString = providerString;
    entityBuilder.Metadata = @"res://*/App_Data.data.csdl|res://*/App_Data.data.ssdl|res://*/App_Data.data.msl";

在第4行,“@”的用法是什么? 我试图删除它,它仍然有效。

2 个答案:

答案 0 :(得分:3)

字符串文字如@“c:\ Foo”称为逐字字符串文字。它基本上意味着“在达到下一个引号字符之前不要对字符应用任何解释”。因此,逐字字符串文字可以包含反斜杠(没有它们被加倍)甚至行分隔符。要在逐字文字中得到双引号(“),你需要加倍它,例如@”我的名字是“”Jon“”“代表字符串我的名字是”Jon“。包含行分隔符的逐字字符串文字也会在行的开头包含空白区域,所以我倾向于在白色空间很重要的情况下使用它们。虽然它们在源代码中包含XML或SQL非常方便,但另一个典型用途(不需要行分隔符)用于指定文件系统路径。

Taken from

答案 1 :(得分:1)

它告诉编译器不要将\视为转义序列并按字面意思取字符串。