これはおそらく非常に単純なオブジェクト指向プログラミングの質問です。私がやろうとしているのは、2つの空のオブジェクトを取得し、クエリを使用してデータベースからデータをプルし、空のオブジェクトにクエリから返されたデータを入力して、それらに対してアサートすることです。以下のコードを参照してください。
object test1;
object test2;
using (SqlConnection dbconnection = new SqlConnection(expconnstr))
{
dbconnection.Open();
var expcommand = new SqlCommand(expectedquery, dbconnection);
var actcommand = new SqlCommand(actualquery, dbconnection);
using (SqlDataReader expreader = expcommand.ExecuteReader())
{
if (expreader.Read())
{
test1 = expreader.GetValue(0);
expreader.Close();
}
}
using (SqlDataReader actreader = actcommand.ExecuteReader())
{
if (actreader.Read())
{
test2 = actreader.GetValue(0);
actreader.Close();
}
}
}
Assert.AreSame(test1, test2);
私は同じパターンに従ってVBで非常によく似たテスト方法を作成し、VBコードは問題なく実行されました。ただし、VBからC#に移行しているときに、このような問題が発生します。コンパイラは、アサートで「割り当てられていない変数の使用」と言います。ただし、上記のコードブロック内の値に割り当てていると思いました。私は何が間違っているのですか?