欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#中@标志的作用

程序员文章站 2022-08-10 09:01:17
参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/verbatim 1、在变量名前加@,可以告诉编译器,@后的就是变量名。主要用于变量名和C#关键字重复时使用。 2、在 ......

参考微软官方文档-特殊字符@,地址

1、在变量名前加@,可以告诉编译器,@后的就是变量名。主要用于变量名和c#关键字重复时使用。

string[] @for = { "john", "james", "joan", "jamie" };
for (int ctr = 0; ctr < @for.length; ctr++)
{
   console.writeline($"here is your gift, {@for[ctr]}!");
}
// the example displays the following output:
//     here is your gift, john!
//     here is your gift, james!
//     here is your gift, joan!
//     here is your gift, jamie!

2、在字符串前加@,字符串中的转义字符串将不再转义。例外:""仍将转义为",{{和}}仍将转义为{和}。在同时使用字符串内插和逐字字符串时,$要在@的前面

string filename1 = @"c:\documents\files\u0066.txt";
string filename2 = "c:\\documents\\files\\u0066.txt";

console.writeline(filename1);
console.writeline(filename2);
// the example displays the following output:
//     c:\documents\files\u0066.txt
//     c:\documents\files\u0066.txt

3、类似于第一条,用于在命名冲突时区分两个特性名。特性attribute自定义的类型名称在起名时应以attribute结尾,例如infoattribute,之后我们可以用infoattribute或info来引用它。但是如果我们定义了两个自定义特性,分别命名info和infoattribute,则在使用info这个名字时,编译器就不知道是哪个了。这时,如果想用info,就用@info,想用infoattribute,就把名字写全。

using system;

[attributeusage(attributetargets.class)]
public class info : attribute
{
   private string information;
   
   public info(string info)
   {
      information = info;
   }
}

[attributeusage(attributetargets.method)]
public class infoattribute : attribute
{
   private string information;
   
   public infoattribute(string info)
   {
      information = info;
   }
}

[info("a simple executable.")] // generates compiler error cs1614. ambiguous info and infoattribute. 
// prepend '@' to select 'info'. specify the full name 'infoattribute' to select it.
public class example
{
   [infoattribute("the entry point.")]
   public static void main()
   {
   }
}