我有类似于以下的代码:
SqlDataReader sdr = null;
.
.
sdr = cmd.ExecuteReader();
while(sdr.Read()){
string x = sdr["x"].ToString();
Console.WriteLine(x);
long? y = Int64.Parse(sdr["y"].ToString());
}
我目前在解析y的值时正在调试一个问题。在数据库中,对于写入控制台的值 x,它表示 y 是一个数值(如果不是,它将为空)。
当抛出异常时,我将鼠标悬停在 sdr 上并导航到正在存储的实际数据。元素 [0] 中的值与刚刚写入屏幕的值 x 相对应。换句话说,肯定会访问 x,因为我可以看到 x 的正确值正在显示。但是,在 Visual Studio 2008 中,调试时,查看对象的内存,第一个元素的 x 列值与控制台上显示的值不同!
- 为什么我看不到已访问的元素?- 这个问题是否与我的数值未正确解析有关?
我确实注意到另一个奇怪的事情:我第一次在 Visual Studio 中查看 sdr 对象时,我可以看到元素。如果我将鼠标移动到屏幕的另一侧,然后将鼠标悬停在对象上,尝试遍历 sdr 读取器对象的元素,没有元素 - 好像它是空的?!?!