发回参数时收到此错误
错误:必须在控制离开之前分配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);
与此问题相关
答案 0 :(得分:30)
您正在if语句中分配Id1
和Id2
,并且编译器无法确定是否在运行时为其分配值,从而导致错误。
您可以在if语句之前为它们分配一些默认值。就像是。
Id1 = 0;
Id2 = 0;
if (rdr.Read())
{
Id1 = (int)rdr["ID1"];
Id2 = (int)rdr["ID2"];
}
或在else
部分条件中指定一些默认值。
在控件离开函数之前,必须为out
类型参数指定一些值。在您的情况下,编译器无法确定是否将分配您的变量,因为它是在if
语句中分配的。
在函数成员的可执行代码中的给定位置,a 如果编译器可以,变量被称为明确赋值 通过静态流量分析证明变量已经存在 自动初始化或已成为至少一个目标 分配
答案 1 :(得分:2)
您需要初始化这些变量;
在从Getpapers()方法返回之前它必须保留一些值