重複の可能性:
C#の文字列の前の@は何ですか?
Windowsアプリケーションを
使用しているのになぜ別の文字列@
に置き換えるのに使用するのですか\
string.replace(@"\","$$")
C#
重複の可能性:
C#の文字列の前の@は何ですか?
Windowsアプリケーションを
使用しているのになぜ別の文字列@
に置き換えるのに使用するのですか\
string.replace(@"\","$$")
C#
文字列リテラルの@
前にあると、逐語的な文字列リテラルになるため、円記号\
を2倍にする必要はありません。同じ効果の"\\"
代わりに使用できます。@"\"
そうしなかったら、\
一緒に逃げなければならないからです\\
@
逐語的な文字列と呼ばれるものに慣れています
C#では、文字列の前にプレフィックス@
を付けて逐語的にすることができるため、特殊文字をエスケープする必要はありません。
@"\"
と同じです
"\\"
C#言語仕様2.4.4.5文字列リテラルは次のように述べています。
C#は、通常の文字列リテラルと逐語的な文字列リテラルの2つの形式の文字列リテラルをサポートしています。
通常の文字列リテラルは、「hello」のように二重引用符で囲まれた0個以上の文字で構成され、単純なエスケープシーケンス(タブ文字の場合は\ tなど)と16進数およびUnicodeのエスケープシーケンスの両方を含めることができます。
逐語的な文字列リテラルは、@文字とそれに続く二重引用符文字、0個以上の文字、および終了二重引用符文字で構成されます。簡単な例は@"hello"です。逐語的な文字列リテラルでは、区切り文字の間の文字は逐語的に解釈されますが、唯一の例外は引用符-エスケープシーケンスです。特に、単純なエスケープシーケンス、および16進数とUnicodeのエスケープシーケンスは、逐語的な文字列リテラルでは処理されません。逐語的な文字列リテラルは複数行にまたがることがあります。
文字を使用する逐語的な文字列リテラルを使用すると、文字列内の文字@
と一緒に個別にエスケープする必要があるほとんどすべての文字を実際にエスケープするのが少し簡単になり\
ます。
注:"
逐語的モードでも、charはエスケープする必要があります。
したがって、エスケープする必要のあるすべての必要な文字をエスケープするために長い文字列を通過する必要がないようにするために、これを使用します。
バックスラッシュはエスケープ文字として扱われ、「@」を使用しなかった場合は「認識されないエスケープシーケンス」エラーが発生するためです。'@'を使用すると、コンパイラにエスケープ文字を無視するように指示されます。これは役立つかもしれません。