2011-09-23 179 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;