你必须在一个方法中初始化一个字符串变量吗



我在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"条件的信号。

相关内容

  • 没有找到相关文章

最新更新