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

发回参数时会收到此错误

错误:必须在控制离开当前方法之前分配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); 

与此问题相关

相关问题

您在if语句中分配Id1Id2并且编译器无法确定是否在运行时为其分配值,从而导致错误。

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

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

或者在条件的else部分指定一些默认值。

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

请参阅: 5.3明确的分配

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

您需要初始化这些变量;

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