2011-09-23 9 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으로 처음 초기화 결과 = 0 – Rob

1

메서드의 result 매개 변수는 out으로 표시되어 있습니다. out로 표시된 매개 변수 즉

result = 5; 

이것은 당신의 방법의 발신자가 out로 전달되는 매개 변수는 항상 한 번 방법 마감을 설정되어 있는지 보장이 있으므로 적용됩니다, 당신의 방법 내에서 할당해야합니다.

1

메서드에 result 변수를 설정하지 않았습니다. 내가 추측하고있어

당신은 (캐치에, 내부 및 경우 외부) 모든 가능성에 의미 여분의 라인 같은

result = intRet; 
관련 문제