我正在从存储过程创建类的实例,但出现以下错误:
使用未分配的局部变量“member”
我有以下代码:
Member member;
while (rdr.Read())
{
member = new member(rdr.GetInt32, rdr.GetString(1)); // Populate Class from Stored Procedure
}
return member
我意识到编译器不知道 while 循环总是会被触发,但是在不创建默认构造函数的情况下解决这个问题的最干净的方法是什么?
最佳答案
编译器无法确定您的条件 for 循环 是否为真以及 member
是否会被初始化。因此错误。
因为您在循环后返回 member
并在循环内完成实例化。不保证 member
会被初始化/分配一个值。 rdr.Read() 可能在第一次迭代中返回 false。
你可以这样做:
Member member = default(Member); //null for reference type
while (rdr.Read())
{
member = new member(rdr.GetInt32, rdr.GetString(1)) // Populate Class from Stored Procedure
}
return member;
代码中的另一个错误是使用rdr.GetInt32
,它是一种方法,应该指定列序号,如下所示:
rdr.GetInt32(0)
关于c# - 使用从存储过程创建的未分配的局部变量(对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546159/