重複の可能性:
C#の変数名での@文字の使用/意味は何ですか?
.netの開発を行っていたところ、メソッド呼び出しの前に@記号を追加できることに気付きました。
var message = dog.@SayHello();
不思議に思うのですが、なぜこれができるのですか?
重複の可能性:
C#の変数名での@文字の使用/意味は何ですか?
.netの開発を行っていたところ、メソッド呼び出しの前に@記号を追加できることに気付きました。
var message = dog.@SayHello();
不思議に思うのですが、なぜこれができるのですか?
シンボルはキーワードをエスケープし、@
それらを通常の識別子に変えることができます。キーワードは言語に依存するため、ほとんどの .net 言語はこのようなメカニズムをサポートしています。そのため、他の言語で記述されたコードは、気付かないうちに言語のキーワードと衝突する可能性があります。
一部の人々@this
は、最初のパラメーター拡張メソッドを使用することを好みます。
public static void MyExtension(this MyType @this)
これが役立つ別のシナリオは、メンバーを使用して html 属性を表す場合です。class
この機能がなければ、属性を表すことができませんでした。
C# キーワードを識別子として使用する別の言語で記述されたコードと相互運用する場合は、シンボルを任意@
の識別子の前に付けることができます。
object @class; //allowed
object class; //error
これは、C# での有効な識別子の定義の一部にすぎません。
@
キーワードとして解釈される識別子を使用できます。
たとえば、class という名前の変数が必要な場合は、次のように記述できます。
int @class;
もちろん、できるからといって、やればいいというわけではありません。
テンプレートまたは外部ソースから C# コードを作成するコード ジェネレーターが役立つ場合があります。たとえばxsd.exe
、XML スキーマをバックアップする C# クラスを作成する SDK コマンドライン ツールです。XML スキーマに、C# で予約されている要素または属性名 (class など) が含まれている場合xsd.exe
、 は一致する C# クラスで名前を保持しますが、接頭辞として@
.
できるからといって、そうすべきというわけではありません。