2016-09-12 3 views
-4

"_Email"조건이 처음 만났는지 확인하고 다른 if 문에 대한 결과를 다음 검사에 전달한 다음 다시 확인하고 싶습니다. _Email이 null이면 마지막 체크를 위해 빈 문자열이되기를 원합니다.세 개의 if 문 중첩

여기에 내가 뭘 잘못 모르겠습니다 코드

private string _Email; 
    public string Email 
    { 
     get 
     { 
      if (String.IsNullOrEmpty(_Email)) 
      { 
       _Email = GetEmailAddress(); 
      } 
      else if (_Email.IsEmptyOrNull()) 
      { 
       _Email = User.Current.Preference("Email"); 
      } 
      else if (_Email.IsEmptyOrNull()) 
      { 
       _Email = ""; 
      } 
      return _Email; 
     } 
    } 

입니다. 더 자세한 정보가 필요하면 알려주십시오. 조건이 충족되는 절을

IsNullOrEmptyString 클래스의 정적 방법 첫 번째 실행됩니다 경우 때문에

+0

이 'IsEmptyOrNull'은 무엇입니까? 나는 당신이'string.IsNullOrEmpty'를 의미한다고 생각하니? 객체가 null이면 객체 ('_Email')에서 함수를 호출 할 수 없습니다. 당신은'NullReferenceException'을 얻을 것이다 – dman2306

+1

@BradleyDotNET 첫째로, 나는 "말도 안되는"부분은 그가 물어 보는 부분이라고 생각한다. (왜냐하면 그는'else'가 아닌'if'를 사용해야하기 때문이다.) 둘째, 사이트 효과는 어디에 있는가? 그는 내게 용납 될 수없는 뒷받침 재산을 조작하고 있습니까? – dman2306

+1

@BradleyDotNET 아니오, 그렇지 않습니다. 그것은 완벽하게 좋은 의미를가집니다. null 인 경우 할당하십시오. 아직 null 인 경우 다른 곳에서 가져 오십시오. STILL이 널이면 empty로 설정하십시오. 절대로 조건이 난센스가 아닙니다. 그들은 똑같은 것이 중요합니다. – Dispersia

답변

4

당신은 당신의 코드에서 else을 제거해야합니다. _Email.IsNullOrEmpty 대신 String.IsNullOrEmpty을 사용하십시오.

private string _Email; 
public string Email 
{ 
    get 
    { 
     if (String.IsNullOrEmpty(_Email)) 
     { 
      _Email = GetEmailAddress(); 
     } 
     if (String.IsNullOrEmpty(_Email)) 
     { 
      _Email = User.Current.Preference("Email"); 
     } 
     if (String.IsNullOrEmpty(_Email)) 
     { 
      _Email = ""; 
     } 
     return _Email; 
    } 
} 

을 나는 귀하의 재산에 코드를 줄이기 위해 GetEmail 같은 것을라는 방법으로 코드를 이동하는 것이 좋습니다 (내가 _Email.IsNullOrEmpty처럼 그것을 할 때 내가 컴파일러 오류) (내 의견으로는 추한 도착)

+3

_Email이 다음과 다음 사이에서 변경 될 수 있기 때문에 조건이 동일하지 않습니다. – zmbq

+1

하지만 첫 번째 시도가 문자열을 반환하지 않으면 어쩌면 두 번째 또는 thirth. 나는 그 생각을 thats라고 생각 하느냐? – NtFreX