var phone = @"^\+(?:[0-9] ?){6,14}[0-9]$";
電話は等しい^\\+(?:[0-9] ?){6,14}[0-9]$
私は(そして私が見つけた例が示すように)@文字が私の文字列をそのままにすることを意味していると思いました。\ が 2 倍になるのはなぜですか? どうすれば停止できますか?
Visual Studio デバッガーは、C# では \ がエスケープ シーケンスの前にあるため、2 倍になったように表示します。心配する必要はありません。文字列は変更されていません。
デバッグインスペクターで2倍になっているように見えるだけです。
インスペクターに表示される文字列は で始まっていない@
ことに注意してください@
。2 つの形式は同等です。
文字列の内容がどうしても気になる場合は、コンソールアプリで出力してください。
別の言い方をすれば、比較は
var equal = @"^\+(?:[0-9] ?){6,14}[0-9]$" == "^\\+(?:[0-9] ?){6,14}[0-9]$"
常になりますtrue
。そうであるように、
var equal = @"\" == "\\";
テキスト ビジュアライザーを使用して変数を調べると、 verbatimを宣言したときのように、エスケープされていないプレーンな文字列が表示されます。