문제

C#에 스위치가있을 수 있습니까? String.Empty? 나는 이것을 할 수 있다는 것을 안다 :

switch (text)
{
    case null:
    case "":
        break;
}

IF 문의 큰 목록을 원하지 않기 때문에 더 나은 것이 있습니까?

나는 교체하려고 노력하고있다 :

if (String.IsNullOrEmpty(text))
    blah;
else if (text = "hi")
    blah
도움이 되었습니까?

해결책

다음과 같은 것을 제안합니다.

switch(text ?? String.Empty)
{
    case "":
        break;
    case "hi":
        break;
}

그게 당신이 찾고있는 것입니까?

다른 팁

당신의 예에 무슨 문제가 있습니다 switch 성명?

switch (text)
{
    case null:
    case "":
        foo();
        break;
    case "hi":
        bar();
        break;
}

그것은 작동합니다 (그리고 어떤 이유로 나를 놀라게 한 이유 - 나는 그것이 불평하거나 충돌 할 것이라고 생각했다. null 사례) 분명합니다.

그 문제에 대해 왜 걱정하는 이유 String.Empty? 나는 여기서 뭔가를 놓치고있다.

어때

if (string.isNullOrEmpty(text))
{
   //blah
}
else
{
 switch (text)
 {
     case "hi":
 }

}

로부터 선적 서류 비치String.Empty:

이 필드의 값은 제로 길이 문자열 ""입니다.

나는 이것을 사이의 차이가 없다는 것을 의미한다고 해석합니다. "" 그리고 String.Empty. 왜 그들을 구별하려고합니까?

빈 문자열은 ""입니다. 당신이 그 이유 ~할 수 있다 "string.empty"는 "string.empty"는 "string.empty"는 "empty"는 클래스 "String"의 필드이고 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "

상수 값은 경우, string.empty는 필드이며 런타임에 변경 될 수 있습니다. (이 경우 동일하게 유지되지만 각 클래스의 모든 정적 필드가 일정한 값이 아닙니다.)

'if'의 경우 해당 조건은 실행 시간에 평가됩니다. ~ 아니다 일정한 값이 필요합니다.

나는 이것이 이유를 설명하기를 바랍니다.

내가 방금 알아 차린 것은 당신이 할 수 있다는 것입니다 IF/ELSE 및 SWINGE 문장을 결합하십시오! 전제 조건을 확인해야 할 때 매우 유용합니다.

if (string.IsNullOrEmpty(text))
{
    //blah
}
else switch (text)
{
    case "hi":
        Console.WriteLine("How about a nice game of chess?");
        break;
    default:
        break;
}
string StrMode;
if (!string.IsNullOrEmpty(StrMode))
{  
    switch (StrMode.Trim())
    {
        case "Souse":
        {
             //Statement Eg:  
             MesssageBox.Show("Souse");
             break;
        }

        case "Company Agent":
        {
             //Statement Eg:
             MesssageBox.Show("Souse");
             break; 
        }

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