1

我正在用 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");
    }
}
4

2 回答 2

3
if (reader["LastName"].ToString() == lastname)

如果这永远不是真的,那么result就不会被初始化。SqlDataReader总是在使用之前初始化。只需初始化字符串。

var result = "";
于 2014-10-03T03:43:38.357 回答
0

编译器需要知道您在使用该值时已明确为变量分配了一个值。

在您的情况下,总是被reader分配一个值(那)。reader = myCommand.ExecuteReader();resultreader["LastName"].ToString() == lastname

所以在你进入那个while循环之前的某个地方,你必须分配一个值。result = null就足够了。该值还可用于向调用代码发出“未找到姓氏”的信号。

于 2014-10-03T07:47:55.163 回答