イミディエイトウィンドウは、アプリケーションのデバッグに非常に役立つツールです。ブレークポイントのコンテキストで有効なコードステートメントを実行し、値を検査するために使用できます。また、言語の機能を学習するためのコードスニペットの入力にも使用します。
イミディエイトウィンドウをどのように使用しますか?
イミディエイトウィンドウは、アプリケーションのデバッグに非常に役立つツールです。ブレークポイントのコンテキストで有効なコードステートメントを実行し、値を検査するために使用できます。また、言語の機能を学習するためのコードスニペットの入力にも使用します。
イミディエイトウィンドウをどのように使用しますか?
回答:
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
疑問符( '?')は、イミディエイトウィンドウに直接いる場合は不要ですが、わかりやすくするためにここに含まれています(式の入力と結果を区別するため)。ただし、コマンドウィンドウを使用していて、イミディエイトウィンドウで簡単な操作を行うには、ステートメントの前に「?」を付けます。そして、あなたは行きます。
Intellisenseは[イミディエイトウィンドウ]で機能しますが、少し矛盾する場合があります。私の経験では、これはデバッグモードでのみ使用でき、デザイン、非デバッグモードでは使用できないようです。
残念ながら、イミディエイトウィンドウのもう1つの欠点は、ループをサポートしないことです。
Ctrl + Alt + I
またはデバッグ->
イミディエイトウィンドウは、コマンドの実行にも使用できます。>
コマンドを続けて入力するだけです。
たとえば>shell cmd
、コマンドシェルを起動します(これは、たとえば、Visual Studioに渡された環境変数を確認するのに役立ちます)。>cls
画面をクリアします。
よく使用されるコマンドのリストを次に示します。これらのコマンドには独自のエイリアスがあります。https://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx
>open Filename
選択したファイルをソリューションで開き、ファイル名を補完することさえします。
イミディエイトウィンドウは、式のデバッグと評価、ステートメントの実行、変数値の出力などに使用されます。デバッグ中に開発言語によって評価または実行される式を入力できます。
イミディエイトウィンドウを表示するには、[デバッグ]> [ウィンドウ]> [イミディエイト]を選択するか、Ctrl-Alt-Iを押します。
イミディエイトウィンドウの例を次に示します。
int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}
ブレークポイントを追加
コマンドを呼び出す