2011-09-23 93 views
0

嗨,大家好,我在从方法返回多个值时遇到问题。我使用的是“出”从方法返回其他值,这里的片段:从方法中返回多个值

public DataTable ValidateUser(string username, string password, out int result) 
{ 
    try 
    { 
     //Calls the Data Layer (Base Class) 
     if (objDL != null) 
     { 
      int intRet = 0; 
      sqlDT = objDL.ValidateUser(username, password, out intRet); 
     } 
    } 
    catch (Exception ex) 
    { 
     ErrorHandler.Handle(ex); 
     OnRaiseErrorOccuredEvent(this, new ErrorEventArgs(ex)); 
    } 
    return sqlDT; 
} 

然后当我编译有这样一个错误:

“的输出参数‘回归’必须被分配以前控制离开目前的方法“

任何人都可以帮我解决这个问题。

+0

什么是'sqlDT'?它在哪里定义? – zerkms

+0

抱歉,sqlDT是一个DataTable – Rob

+0

,它在哪里定义? ;-) – zerkms

回答

2

这意味着在所有的可能性(内,外,如果在捕捞),你的结果变量必须分配。

最好的办法是给它在功能开始时的默认值:

public DataTable ValidateUser(string username, string password, out int result) 
{ 
    result = 0; 
    try 
    { 
     //Calls the Data Layer (Base Class) 
    if (objDL != null) 
    { 
     int intRet = 0; 
     sqlDT = objDL.ValidateUser(username, password, out intRet); 
     result = intRet; 
    } 
//.... 
+0

感谢它的工作..实际上,我把结果= intRet一会儿去,但同样的问题,现在围绕我的工作,我把结果的值初始化为零首先结果= 0 – Rob

1

您方法的参数result标记为out。标有out参数必须在方法内进行分配,即

result = 5; 

这是执行,让你的方法的调用者有保证在于:与out传递的参数始终设置一旦你的方法完成。

1

您没有在方法中设置result变量。

我猜你要添加一个额外的行如

result = intRet;