在C#中,@字符可用于如下方面:
1、字符串原样输出,不进行字符串转义:
通过在字符串前添加@字符,可以将字符串中的转义字符(如字符\,字符",字符')视为普通字符,而不需要使用双斜杠进行转义。
示例:
string myString = @"C:\Windows"; //与 string myString = "C:\\Windows"; 等价
Console.WriteLine(myString); //输出:C:\Windows
注意,有一种特殊情况:
如要在一个用 @ 引起来的字符串中包括一个双引号,需要使用两对双引号:
string myString = @"Mr. Zhang said, ""Hello""";
Console.WriteLine(myString); // 输出:Mr. Zhang said, "Hello"
2、用 @把关键字作为标识符:
C#中有许多关键字,如if、for、while等,这些关键字是C#语言的保留字,不能用作标识符。但是,通过在关键字前添加@字符,可以将关键字当作标识符使用。
例如,@if是一个有效的变量名,可以用于保存数据。
示例:
string @if = @"Mr. Zhang said, ""Hello""";
Console.WriteLine(@if); //输出:Mr. Zhang said, "Hello"
3、用 @使编译器在命名冲突的情况下区分两种属性:
属性是派生自 Attribute 的类。 其类型名称通常包含后缀 Attribute,但编译器不会强制进行此转换。 随后可在代码中按其完整类型名称(例如 [InfoAttribute])或短名称(例如 [Info])引用此属性。 但是,如果两个短名称相同,并且一个类型名称包含 Attribute 后缀而另一类型名称不包含,则会出现命名冲突。
示例:
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.")] // 这句出现编译错误,因为编译器无法确定将 Info 还是 InfoAttribute 属性应用于 Example 类
// 应该改为 [@Info("A simple executable.")]
public class Example
{
[InfoAttribute("The entry point.")]
public static void Main()
{
}
}
以上是C#中@字符的使用方法,谨供初学者参考。