gpt4 book ai didi

c# - 无法针对对象断言

转载 作者:行者123 更新时间:2023-11-30 22:27:38 24 4
gpt4 key购买 nike

这可能是一个非常简单的面向对象编程问题。我想要做的是获取 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# 时,我遇到了诸如此类的问题。编译器在断言处说“使用未分配的变量”。但是,我认为我是在上面的代码块中分配一个值。我做错了什么?

最佳答案

actreader.Read() 可能会返回 false,因此 test2 可能永远不会被赋值,并且编译器会出错。

您可以通过将 test1test2 初始设置为 null 来解决此问题:

object test1 = null;
object test2 = null;

关于c# - 无法针对对象断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com