Visual Studio のイミディエイト ウィンドウをどのように使用しますか? 質問する

Visual Studio のイミディエイト ウィンドウをどのように使用しますか? 質問する

イミディエイト ウィンドウは、アプリケーションのデバッグに非常に便利なツールです。ブレークポイントのコンテキストで有効なコード ステートメントを実行し、値を検査するために使用できます。また、言語機能を学習するためにコード スニペットを入力するときにも使用します。

イミディエイトウィンドウはどのように使用しますか?

ベストアンサー1

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

イミディエイト ウィンドウを直接使用している場合、疑問符 ('?') は不要ですが、ここではわかりやすくするために (入力した式と結果を区別するために) 含まれています。ただし、コマンド ウィンドウを使用していて、イミディエイト ウィンドウで簡単な操作を実行する必要がある場合は、ステートメントの前に '?' を付けて実行してください。

インテリセンスはイミディエイトウィンドウで動作しますただし、時々少し矛盾することがあります。私の経験では、デバッグ モードでのみ使用可能で、デザイン モードや非デバッグ モードでは使用できないようです。

残念ながら、イミディエイト ウィンドウのもう 1 つの欠点は、ループをサポートしていないことです。

おすすめ記事