문제

아래 예제와 비슷한 코드를 끊임없이 작성합니다.

if (object["Object Name"] != null) {
    if (object["Object Name"] == "Some Value") {
        // Do Statement A
    } else {
        // Do Statement B
    }
} else {
    // Do Statement B
}

여기서 문제는 물체가 무효인지 아닌지를 많이 점검하고 실제 내용인지 확인할 수 있다는 것입니다.

"Statement B"는 항상 동일하며 제 경우에는 일반적으로 SQL 문입니다.

이것에 대해 더 나은 방법이 있어야합니까?

감사
스티븐

도움이 되었습니까?

해결책

C#에는 단락이 있으므로 다음을 수행 할 수 있습니다.

if(null != object && object.name == foo)
  do A
else
  do B

C#은 항상 조건문에서 첫 번째 표현식을 먼저 평가하고 실패하면 진술의 해당 부분에서 다른 것을 시도하지 않습니다.

이 시점에서, 하나 이상의 저렴한 작업과 함께 조건부 명세서에서 값 비싼 작업을 수행하려면 가능한 경우 끝에 적용하는 것이 좋습니다. . 그래서

if(trivial comparison && trivial comparison && REALLY EXPENSIVE OPERATION)

이제 값 비싼 작전 만 최후의 수단으로 실행할 것입니다.

다른 팁

C#은 단락을 수행하기 때문에 예. 이 시도:

if (object["Object Name"] != null && object["Object Name"] == "Some Value") 
{
    // Do Statement A
} 
else 
{
    // Do Statement B
}

나는 if-then-else를 이것으로 다시 작성하면 단일 B- 결석으로 인해 더 멋지게 보일 것이라고 생각합니다.

if ((object["Object Name"] != null) && (object["Object Name"] == "Some Value")) 
{
    // Do Statement A
} 
else 
{
    // Do Statement B
}

왜 이중 점검입니까? 분명히 이것은 충분할 것입니다 :

if(object["Object Name"] == "Some Value") {
    // Do statement A
} else {
    // Do statement B
}

나는 당신이 Null Checking으로 무엇을 얻고 있는지 보지만, 당신이주는 특정 예제에는 그것을 요구하지 않습니다.

편집하다: 이제 당신이 글을 썼다면 이것 대신에:

if (object != null) {
    if (object["Object Name"] == "Some Value") {
        // Do Statement A
    } else {
        // Do Statement B
    }
} else {
    // Do Statement B
}

그러면 해결책은 다음과 같습니다.

if(object != null && object["Object Name"] == "Some Value") {
    // Do Statement A
} else {
    // Do Statement B
}

면책 조항 : 일반적인 단락 방법을 수행하지 않습니다.

글쎄, 특히 쿼리가 동일하게 유지되는 경우 조회를 수행하기 위해 별도의 기능을 만들 수 있습니다. 그래서 다음과 같은 것 : (의사 코드 수신)

private bool IsNullCheck(string objectName)
{
  if (object["Object Name"] != null)
     return false;
  else
     // statement B
}

if (!IsNullCheck("Object Name") && if(object["Object name"] == "Value") {
   // stuffs

} 
else 
{
        // Do Statement B
}

또는 같은.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top