[解決済み] Visual Studioでイミディエイトウィンドウを使うには?
質問
イミディエイトウィンドウは、アプリケーションのデバッグに非常に便利なツールです。ブレークポイントのコンテキストで有効なコードステートメントを実行し、値を検査するために使用することができます。また、言語機能を学習するためにコード スニペットを入力するためにも使用します。
イミディエイトウィンドウはどのように使うのですか?
解決方法を教えてください。
Visual Studio のイミディエイトウィンドウの素晴らしい機能の 1 つに、メソッドの戻り値を評価する機能があります。 ではない が変数代入の一部でない場合です。デバッグ モードでは、前述のように、変数と対話し、メモリ内の式を実行することができ、これができるようになるために重要な役割を果たします。
たとえば、次のような 2 つの数値の合計を返す静的メソッドがあったとします。
private static int GetSum(int a, int b)
{
return a + b;
}
そして、イミディエイトウィンドウに次のように入力します。
? GetSum(2, 4)
6
見ての通り、これは静的なメソッドに対しては非常にうまく動作します。 しかし、メソッドが非静的な場合は、そのメソッドが属するオブジェクトへの参照と対話する必要があります。
例えば、あなたのクラスがこのようなものだとします。
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
オブジェクトがすでにメモリ上に存在し、それがスコープ内にある場合、インスタンス化されていれば、イミディエイトウィンドウで呼び出すことが可能です 前に 現在のブレークポイントの前 (または、少なくともデバッグモードでコードが一時停止された場所の前) にインスタンス化されている限り、イミディエイトウィンドウで呼び出すことができます。
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
さらに、メモリ上の既存のインスタンスに依存せずに直接メソッドと対話し、テストしたい場合、インスタンス化した を所有する のインスタンスをイミディエイトウィンドウに表示させることができます。
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
さらに一歩進んで、さらなる評価や計算などを行いたい場合は、メソッドの結果を一時的に変数に代入することができます。
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
さらに、新しいオブジェクトの変数名を宣言せず、単にそのメソッド/関数の1つを実行したい場合は、次のようにします。
? new Foo().GetMessage()
"hello"
メソッドの値を見るための非常に一般的な方法は、クラスのメソッド名を選択して 'ウォッチ追加' を行い、ウォッチウィンドウでその現在の値を見ることができるようにすることです。 しかし、もう一度言いますが、有効な値が表示されるためには、オブジェクトがインスタンス化され、スコープ内にある必要があります。 これは、イミディエイトウィンドウを使うよりもはるかに非力で、制限も多いものです。
メソッドの検査とともに、簡単な数学の方程式を実行することができます。
? 5 * 6
30
または値を比較する。
? 5==6
false
? 6==6
true
イミディエイトウィンドウに直接入っている場合はクエスチョンマーク('?')は不要ですが、ここではわかりやすくするために入れています(入力された式と結果を区別するため)。しかし、コマンドウィンドウにいるときにイミディエイトウィンドウでいくつかの作業を行う必要がある場合は、文の前に'?
イミディエイトウィンドウでのインテリセンスの動作 しかし、時々、少し一貫性がないことがあります。私の経験では、デバッグ モードでのみ利用可能で、デザイン モード、非デバッグ モードでは利用できないようです。
残念ながら、イミディエイトウィンドウのもうひとつの欠点は、ループをサポートしないことです。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] Visual Studioの編集ウィンドウを分割する
-
[解決済み] ERROR: ソースファイル " " を開くことができません。
-
[解決済み] Microsoft Visual Studio (VS)」エラー "設定された開発用Webサーバーに接続できません "の解決方法
-
[解決済み] コードのすべてのセクションを折りたたむコマンド?
-
[解決済み] Windows 8でVisual Studioを常にAdministratorとして実行するように強制することはできますか?
-
[解決済み] Visual Studioソリューションのコード行数はどのように数えるのですか?
-
[解決済み] Visual Studio CodeとVisual Studioの違いは何ですか?
-
[解決済み] Visual Studioの出力ウィンドウに書き込む
-
[解決済み】Visual Studioでコードを自動フォーマットする方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】COMコンポーネントの呼び出しからエラーHRESULT E_FAILが返された VS2012 デバッグ時
-
[解決済み] Visual Studioで不整合な行末を正規化するとはどういう意味ですか?
-
[解決済み] Visual Studio 2019 - エラー MSB8020: Visual Studio 2013 用のビルドツールが見つかりません。
-
[解決済み] MSBuildExtensionsPath32が正しく設定されていない?
-
[解決済み] MTとMDは何の略ですか?
-
[解決済み] デバッグ時にCOMコンポーネントの呼び出しからエラーHRESULT E_FAILが返された VS2012
-
[解決済み] デバッグビルドのみVisual Studioのポストビルドイベントを実行する方法
-
[解決済み】dotnet core/csprojのAssemblyInfoに相当するもの。
-
[解決済み】ソリューションエクスプローラーで、開いているタブからファイルを自動選択する。
-
[解決済み】Visual Studioのポストビルドイベント - 相対的なディレクトリの場所にコピーする