我在C#中编程,我的字符串变量result
总是出错。
当我将鼠标悬停在return result
行上时,它显示使用未分配的局部变量。
在使用结果之前,是否必须为其赋值?为什么我对SqlDataReader
阅读器没有得到同样的错误?
string searchbyLastName(string lastname)
{
string result;
SqlDataReader reader;
try
{
reader = myCommand.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
if (reader["LastName"].ToString() == lastname)
{
result = reader.GetString(0);
break;
}
}
return result;
}
else
return "No results found";
}
catch (Exception)
{
return("Database Error");
}
}
if (reader["LastName"].ToString() == lastname)
如果这从来都不是真的,则result
不被初始化。SqlDataReader
总是在使用之前进行初始化。只需初始化字符串。
var result = "";
编译器需要知道,在使用该值的时候,您已经明确地为变量分配了值。
在您的情况下,reader
总是被分配一个值(reader = myCommand.ExecuteReader();
),但result
不是,因为这取决于reader["LastName"].ToString() == lastname
是否为真,这可能永远不会发生(即使您设计的系统在现实中总是找到匹配项-编译器并不知道)。
所以在你进入while循环之前,你必须指定一个值。CCD_ 10就足够了。这个值也可以用来向调用代码发出"lastname not found"条件的信号。