11

SOを調べましたが、答えが見つかりませんでした。確かにそこにあると思います...?

デバッグ中に、ブレークポイントを設定した場合、returnステートメントの値を取得するにはどうすればよいですか?「きれい」に見えるように、1行に凝縮するのが好きです。しかし、返された結果をデバッグする方法がわからないため、現在はわかりません...?

using (IUnitOfWork context = new EFUnitOfWork())
{
    var repo = new ReportRepository(context);
    return repo.GetProcedureReport(startDate, endDate).ToList();
    //return result.ToList();
}
4

3 に答える 3

17

VS 2013では、変数$ReturnValueをウォッチに追加できます。関数からの実際の戻り値が含まれています。

于 2014-07-23T06:25:14.590 に答える
6

メソッドを選択して右クリックします。メニューから[クイックウォッチ]を選択します。

ここに画像の説明を入力してください

ブレークポイントを中に入れることはできないと思いますGetProcedureReportか?

于 2013-03-04T22:24:40.823 に答える
4

あなたが試みている戻り値のデバッグのタイプは、C#のような管理された言語では単純に不可能です。C ++デバッガーは、autosウィンドウを介してこの情報を提供しますが、管理対象言語は提供しません。

主な理由は、CLRデバッグエンジンがこの値を提供しないためです。C#、VB、またはF#でこれを提供するには、すべてのreturnステートメントを書き直して、値を一時的なものにスピルしてから、一時的なものを返す必要があります。戻り値のデバッグは、デバッガーでこの一時的なものを表示することで実現できます。

var returnTemp = repo.GetProcedureReport(startDate, endDate).ToList();
return returnTemp;

これは機能しますが、コードにネガティブな要素を提供します。最も注目すべきは、大きな構造体の値が2回コピーされ、パフォーマンスに悪影響を与えることです。さらに、この書き換えはコンパイル時に発生する必要があり、コンパイルされるすべてのメソッドに影響します。デバッグ時にオンデマンドで実行できれば、影響ははるかに少なくなります。ネガティブはここでのメリットを比較検討します。

VB.Netは、わずかな程度で戻り値のデバッグを提供することに注意してください。私はそれがどのように機能するかについてここでブログを書きました

http://blogs.msdn.com/b/jaredpar/archive/2011/01/12/why-the-debugging-difference-between-c-and-vb-net-return-values.aspx

于 2013-03-04T23:23:16.990 に答える