ループの計算処理をチェック

表示件数のデバッグは完了しましたが、合計金額のバグの原因は判明していません。価格の集計処理に問題がありそうなので、ループにブレークポイントを設定してデバッグしてみましょう。

ウォッチウィンドウ

ここでは、ウォッチウィンドウを使って変数の値をチェックします。

ウォッチウィンドウで変数の値と命令の実行結果を確認

ウォッチウィンドウの使い方は、名前列をクリックして確認したい変数や式を入力するだけです。コードからドラッグしたり右クリックで登録することもできます。ここでは、row["名称"](VBではrow("名称"))など4種類のウォッチ式を登録しました。 変数の値を確認するという意味でウォッチウィンドウとローカルウィンドウは似ていますが、ウォッチウィンドウでは、チェックしたい値だけをピンポイントで見れる点が便利です。また、ちょっとした計算や命令も実行できます。

ウォッチウィンドウの更新

ウォッチウィンドウの準備ができたので、実行ボタン(F5キー)を何回か押して、ループごとの変数の値を確認します。

ウォッチウィンドウの内容が更新された(sum.ToString("#,#")以外)

ループするたびに、上の3つの変数の値は変化しました。しかし一番下の「sum.ToString("#,#")」の部分だけは変化していません。このようにウォッチウィンドウでは、登録した式に関数が含まれると自動的に値が更新されないことがあります。この場合は、値の右側に表示される丸ボタンをクリックすれば表示を更新できます。

2つ目のエラーの原因を修正

このウォッチウィンドウを確認することで、合計金額が足しこまれるはずの変数「Sum」が毎回上書きされているというバグが判明しました。「sum = Convert.ToInt32(row["価格"])」の部分を「sum += Convert.ToInt32(row["価格"]);」に正しく修正します。

イミディエイトウィンドウ

ここで、ウォッチウィンドウと似た機能を持つ「イミディエイトウィンドウ」についても紹介しておきます。ウォッチウィンドウは表形式のウインドウですが、イミディエイトウィンドウはテキストスクロール型のウィンドウです。

イミディエイトウィンドウで変数の値を表示

イミディエイトウィンドウでは「?」の後にチェックしたい変数名を入力すると、変数の値を表示できます。繰り返し入力する場合は、上矢印キーを押すと過去に実行したコマンドを再表示させることができます。

イミディエイトウィンドウ独自の機能

イミディエイトウィンドウは、ウォッチウィンドウと異なり、新しい変数を宣言することができます。これは、プログラムを実行していないデザイン時にも利用できるため、ちょっとしたコードを断片的に試すことができます。コードを実行する場合は、先頭に「?」を入力する必要はありません。

また、先頭に「>」と入力してVisual Studioを操作することができます。例えば「>編集.すべてクリア(もしくは>Edit.ClearAll)」と入力するとイミディエイトウィンドウをクリアできます(利用できるコマンドについては[ツール]メニュー-[オプション]ウィンドウの[環境]-[キーボード]で確認できます)。さらに、良く使われるコマンドには、あらかじめ短いエイリアス(別名)が設定されています。そのためエイリアスである「>cls」と入力してもイミディエイトウィンドウをクリアできます(定義されているエイリアスの一覧については「>alias」と入力することで確認できます)。