2011-09-08 2 views
-3
public string Valid(OleDbDataReader myreader, int stval) 
{ 
    object val = myreader[stval]; 

    if (val != DBNull.Value) 
    { 
     return val.ToString() ; 
    } 
    else 
    { 
     Convert.ToString(0); 
    } 
} 

당신은 C 함수의 기본에 대해 읽을 필요가"모든 코드 경로가 값을 반환하지 않습니다"라는 오류의 원인은 무엇입니까?

+2

당신은 어떻게 생각하십니까 오류가 의미? – thekip

+0

@thekip 모든 코드 경로가 값을 반환하는 것은 아닙니다. :) –

+2

당신의'else .....'블록은 ** 어떤 ** 값도 반환하지 않습니다 ..... 그 오류는 분명히 ..... ..... –

답변

3

도와주세요 "모든 코드 경로가 값을 반환"오류가있다.

문자열 값을 반환하는 함수는 모든 경우에 값을 반환해야합니다. 여기에는 else 부분도 포함됩니다. 당신이 값을 반환하기위한 것입니다 함수를 만들 때

public string Valid(OleDbDataReader myreader, int stval) 
    { 
     object val = myreader[stval]; 
     if (val != DBNull.Value) 
     { 
      return val.ToString() ; 
     } 
     else 
     { 
      return Convert.ToString(0); //forgot to write return over her 
     } 
    } 
+0

을 원합니다. 아마도이 특별한 경우에 C# 함수가 더 좋을 수도 있습니다 :-) – paxdiablo

+0

@paxdiablo, 아니요. 나는 그가 C로 그것을 못 박았을 것 같습니다. 저는 실제로 이것에 대해 직접 대답하려고했습니다. 그것을 읽은 후에 당신이 웃음 거리가되게하십시오). –

+0

당신이 원하는 정보를 가지고 있다면 받아 들여 asnwer를 표시하는 것을 잊지 마라. –

3

, 당신은 필요가 다른 부분은 당신이 문자열 값을 반환해야보다 실행하지만, 거기에는 반환이되지 않는 경우

이유는 이 함수를 통해 가능한 모든 경로가 결국 값을 반환하도록 보장해야합니다.

public string Valid(OleDbDataReader myreader, int stval) 
{ 
    object val = myreader[stval]; 
    if (val != DBNull.Value) 
    { 
     return val.ToString() ; 
    } 
    else 
    { 
     Convert.ToString(0); 
    } 
} 

내 자신의 개인적인 의견을 : 그것은 아무것도에게 반환되지는 else 절을 입력하고 단순히 함수의 끝까지 떨어질 것 때문에 귀하의 경우에는

는, 값은 myreader[stval]DBNull.Value 동일한 경우는 반환되지 않습니다 이 더 잘 것을 기록 될 것입니다 : 즉

public string Valid (OleDbDataReader myreader, int stval) { 
    object val = myreader[stval]; 

    if (val != DBNull.Value) 
     return val.ToString() ; 

    return Convert.ToString(0); 
} 

,이 일어날 수 있도록 끝 부분에 기본 케이스를 제공하는 것이 좋습니다. 나는 형태의 코드를 볼 때마다 싫증이 나다 :

은 (들여 쓰기 지옥뿐만 아니라) 불필요하게 복잡하고 귀하의 질문에 여기에 설명 된 문제를 정확하게 정렬로 이어질 수 있기 때문에
if something: 
    return or exit 
else: 
    do something else 

. 훨씬 더 (다시, 이것은 내 의견은 있지만 경험이 너무 많은 년에 의해 뒷받침)을 간단 사용 :

if something: 
    return or exit 
do something else 
관련 문제