2

重複の可能性:
C#の文字列の前の@は何ですか?

Windowsアプリケーションを 使用しているのになぜ別の文字列@に置き換えるのに使用するのですか\string.replace(@"\","$$")C#

4

5 に答える 5

6

文字列リテラルの@前にあると、逐語的な文字列リテラルになるため、円記号\を2倍にする必要はありません。同じ効果の"\\"代わりに使用できます。@"\"

于 2012-09-03T14:07:56.850 に答える
3

そうしなかったら、\一緒に逃げなければならないからです\\

@逐語的な文字列と呼ばれるものに慣れています

于 2012-09-03T14:07:45.210 に答える
2

C#では、文字列の前にプレフィックス@を付けて逐語的にすることができるため、特殊文字をエスケープする必要はありません。

@"\"

と同じです

"\\"
于 2012-09-03T14:08:16.263 に答える
1

C#言語仕様2.4.4.5文字列リテラルは次のように述べています。

C#は、通常の文字列リテラルと逐語的な文字列リテラルの2つの形式の文字列リテラルをサポートしています。

通常の文字列リテラルは、「hello」のように二重引用符で囲まれた0個以上の文字で構成され、単純なエスケープシーケンス(タブ文字の場合は\ tなど)と16進数およびUnicodeのエスケープシーケンスの両方を含めることができます。

逐語的な文字列リテラルは、@文字とそれに続く二重引用符文字、0個以上の文字、および終了二重引用符文字で構成されます。簡単な例は@"hello"です。逐語的な文字列リテラルでは、区切り文字の間の文字は逐語的に解釈されますが、唯一の例外は引用符-エスケープシーケンスです。特に、単純なエスケープシーケンス、および16進数とUnicodeのエスケープシーケンスは、逐語的な文字列リテラルでは処理されません。逐語的な文字列リテラルは複数行にまたがることがあります。

文字を使用する逐語的な文字列リテラルを使用すると、文字列内の文字@と一緒に個別にエスケープする必要があるほとんどすべての文字を実際にエスケープするのが少し簡単になり\ます。

注:"逐語的モードでも、charはエスケープする必要があります。

したがって、エスケープする必要のあるすべての必要な文字をエスケープするために長い文字列を通過する必要がないようにするために、これを使用します。

于 2012-09-03T14:33:31.967 に答える
0

バックスラッシュはエスケープ文字として扱われ、「@」を使用しなかった場合は「認識されないエスケープシーケンス」エラーが発生するためです。'@'を使用すると、コンパイラにエスケープ文字を無視するように指示されます。これは役立つかもしれません。

于 2012-09-03T14:10:53.437 に答える