.ToString()をStringBuilderに適用すると、Visual Studio 2013デバッガが予期しない動作をします。コントローラでは、私はいくつかのエラーを傍受しようとしており、このSOの投稿からいくつかのコードを適用しました。 How to get all Errors from ASP.Net MVC modelState?StringBuilderを使用した後にVisual Studio 2013デバッガが文字列の内容を表示できないのはなぜですか?
しかし、デバッガが実行され、StringBuilderに.ToString()アクションが適用された後、ウォッチまたは文字列の上にカーソルを置いて文字列の内容を調べることができません。
string theErrors = string.Empty;
if (!ModelState.IsValid)
{
StringBuilder sb = new StringBuilder();
foreach (ModelState modelState in ViewData.ModelState.Values)
{
foreach (ModelError error in modelState.Errors)
{
sb.AppendFormat("{0}{1}", error.ErrorMessage, Environment.NewLine);
}
}
theErrors = sb.ToString();
sb = null;
}
このコードの後にブレークポイントを置き、 "theErrors"文字列を調べようとすると、Visual Studioデバッガはこのメッセージを表示します。
"名前 'theErrors'は現在のコンテキストに存在しません。
これは予期しない動作です。 StringBuilderに何か問題がありますか?私はStringBuilderを頻繁に使用していますが、以前はこれを見ていませんでした。ご協力いただきありがとうございます。
どのビルド構成を使用していますか?このコードの後ろに 'tblErrors'を使っていますか? –
ありがとうございました。あなたの質問に従っているかどうかわかりません。私は後でその変数をコード内で使うつもりです。私の正気のために、私はStringBuilderを文字列に置き換え、それに連結し始めました。そして、*エラーをキャプチャします。私はその回避策を実行することができますが、それは迷惑StringBuilderが期待どおりに動作していないです。 –
設定が「リリース」または「デバッグ」に設定されていることを意味します。 'リリース'ビルドでは、コンパイラは未使用の変数を最適化します。 –