1

C# winforms アプリに datagridview があり、各行の特定のセルの値を、ファイルから読み取った配列の項目と比較しています。

 foreach (DataGridViewRow dr in dataGridView2.Rows)
                {
                    if (dr.Cells[AcctNoIndex-1].Value == items[custAcctNo-1])//row in datagridview that contains the customer account number
                    {
                        items[custState-1] = dr.Cells[ShipStateIndex-1].Value.ToString();
                        items[custCountry-1] = dr.Cells[ShipCountryIndex-1].Value.ToString();
                        items[custShipState-1] = dr.Cells[ShipStateIndex-1].Value.ToString();
                        items[custShipCountry-1] = dr.Cells[ShipCountryIndex-1].Value.ToString();
                    }

                }

したがって、datagridview の行 dr ごとに、AcctNoIndex-1 のセルを調べます。その値が、いくつかのデータを読み込んだこの配列の値と等しい場合、items[custAcctNo-]、次のことを行います。

しかし、コードをデバッグしていて、[ウォッチ] ウィンドウで、items[custAcctNo-1] が dr.Cells[AcctNoIndex-] と同じであることに気付きました。行の 1 つで、値が同じです。ただし、デバッガーをステップ実行すると、プログラムは if ブロック内のすべてをスキップして続行します。

私のデバッグ出力

誰でもこれで私を助けることができますか?両方の値が文字列であるため、条件は真である必要があり、プログラムは if ブロックで続行する必要があると思いますが、デバッガーが 2 つの値が同じではないと考える理由について混乱しています。

4

1 に答える 1

1

1 つは文字列、もう 1 つはオブジェクトです。両方を文字列にキャストすると機能します。

于 2012-12-18T21:43:36.143 に答える