30

发回参数时收到此错误

错误:必须在控制离开当前方法之前分配 Out 参数

代码是

 public void GetPapers(string web, out int Id1, out int Id2)
    {
        SqlConnection conn = new SqlConnection(ConnectionString());
        conn.Open();
        SqlCommand cmd = new SqlCommand("GetPapers", conn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add(new SqlParameter("@URL", String(web)));

        SqlDataReader rdr = cmd.ExecuteReader();

        if (rdr.Read())
        {
            Id1 = (int)rdr["ID1"];
            Id2 = (int)rdr["ID2"];
        }

        rdr.Close();
    }

称它为

GetPapers(web, out Id1, out Id2);

与这个问题有关

相关问题

4

2 回答 2

36

您正在分配Id1并且Id2在 if 语句中,编译器无法确定它是否会在运行时被分配一个值,因此会出现错误。

您可以在 if 语句之前为它们分配一些默认值。就像是。

Id1 = 0;
Id2 = 0;

if (rdr.Read())
{
    Id1 = (int)rdr["ID1"];
    Id2 = (int)rdr["ID2"];
}

或在您的部分条件中指定一些默认值else

out控件离开功能之前,必须为类型参数分配一些值。在您的情况下,编译器无法确定您的变量是否将被分配,因为它是在if语句中分配的。

参见:5.3 明确赋值

在函数成员的可执行代码中的给定位置,如果编译器可以通过静态流分析证明该变量已自动初始化或已成为至少一次赋值的目标,则称该变量已被确定赋值。

于 2012-07-31T10:27:16.670 回答
3

您需要初始化这些变量;

在从 Getpapers() 方法返回之前,它必须保持一些值

于 2012-07-31T11:26:48.850 回答