583

重複の可能性:
C# の変数名での @ 文字の使用/意味は何ですか?

@ 記号を文字列リテラルの前に使用して、コンパイラが文字列を解析する方法を変更できることを理解しています。しかし、変数名の前に @ 記号が付いているとはどういう意味でしょうか?

4

4 に答える 4

738

@ 記号を使用すると、予約語を使用できます。例えば:

int @class = 15;

上記は機能しますが、以下が機能しない場合:

int class = 15;
于 2009-01-09T20:12:58.063 に答える
444

@ 記号は、C# で 2 つの目的を果たします。

まず、次のように予約済みのキーワードを変数として使用できます。

int @int = 15;

2 番目のオプションでは、文字をエスケープせずに文字列を指定できます。たとえば、「\」文字はエスケープ文字であるため、通常は次のようにする必要があります。

var myString = "c:\\myfolder\\myfile.txt"

または、これを行うことができます:

var myString = @"c:\myFolder\myfile.txt"
于 2009-01-09T20:17:46.493 に答える
63

他の回答が忘れていた重要な点は、「@keyword」が CIL の「keyword」にコンパイルされることです。

したがって、たとえば F# で作成されたフレームワークがあり、「class」という名前のプロパティを使用してクラスを定義する必要がある場合は、実際にそれを行うことができます。

実際にはそれほど有用ではありませんが、これがないと、C# で何らかの形式の言語相互運用が妨げられます。

私は通常、相互運用のためではなく、キーワードの制限を回避するために使用されているのを目にします(通常、これが唯一の効果であるローカル変数名で)。

private void Foo(){
   int @this = 2;
}

しかし、私はそれを強く思いとどまらせます!変数の「最適な」名前が予約済みの名前の 1 つである場合でも、別の名前を見つけてください。

于 2009-01-09T20:26:27.070 に答える
15

C# キーワードを変数として使用できます。例えば:

class MyClass
{
   public string name { get; set; }
   public string @class { get; set; }
}
于 2009-01-09T20:13:41.683 に答える