C#におけるアットマーク(@)は特定の文字列リテラルに対して
エスケープシーケンスを無効化しそのままの形で使用するためのプレフィックスです。
以下にアットマークの意味と使い方をわかりやすく紹介します。
C#文字列前のアットマークの意味や使い方
エスケープシーケンスの無効化
通常、文字列内で特定の文字やシーケンスを表現するためにエスケープシーケンス(バックスラッシュ\で始まる文字列)が使用されます。
しかしアットマークを文字列の前に付けることでその文字列内のエスケープシーケンスを無効化することができます。
string path = @"C:\Program Files\MyApp";
Console.WriteLine(path); // 結果: C:\Program Files\MyApp
上記の例では、アットマークを使用してパス文字列を定義しています。
通常の文字列では、バックスラッシュ\はエスケープシーケンスの一部として扱われますがアットマークを使用することでバックスラッシュをそのままの形で表現することができます。
リソースファイルの識別子としての使用
アットマークは、C#のリソースファイル(.resx)内の識別子に使用することができます。
リソースファイル内ではドット(.)やハイフン(-)など一部の文字が許可されないためアットマークを使用することでこれらの文字を識別子に含めることができます。
string localizedText = Properties.Resources.@public;
Console.WriteLine(localizedText);
上記の例では、リソースファイルからpublicという識別子の値を取得しています。
アットマークを使用することで識別子に予約語として登録されているpublicという単語を使用することができます。
アットマークは特定の文字列内でエスケープシーケンスを無効化したり識別子として予約語を使用したりするために使用されます。
必要に応じてアットマークを利用してより柔軟な文字列の表現やリソースファイルの使用を行うことができます。
文字列の前に@を記述すれば改行を無視できる
アットマークを使用することで文字列リテラル内の改行が無視されます。つまりアットマークを使用せずに改行を含んだ文字列を表現する場合改行が文字列内に含まれます。
string message = "Hello
World";
Console.WriteLine(message);
上記の例では、アットマークを使用せずに改行を含む文字列を定義しています。この場合コンパイルエラーが発生します。
しかし、アットマークを使用すると改行が無視され複数行の文字列を表現することができます。
string message = @"Hello
World";
Console.WriteLine(message); // 結果: Hello World
アットマークを使用することで、改行文字がそのままの形で文字列内に含まれるため改行が有効になります。
アットマークとエスケープシーケンスの組み合わせ
アットマークとエスケープシーケンス(例: \n)を組み合わせて使用することも可能です。
string message = @"Hello\nWorld";
Console.WriteLine(message); // 結果: Hello\nWorld
上記の例では、アットマークを使用して文字列を定義していますが\nのようなエスケープシーケンスはそのままの形で文字列内に表示されます。
アットマークを使用することで文字列リテラル内の改行を無視することができます。
また、エスケープシーケンスもそのままの形で文字列内に表示されます。このようにアットマークを活用することで改行やエスケープシーケンスを柔軟に操作することができます。