2011-08-02 2 views
3

나는 다음과 같은 코드를 사용하고 있습니다 :C#에서 빈 문자열 처리하기 ?? 운영자

string x = str1 ?? str2 ?? str3 ?? "No string"; 

그러나 무엇 이러한 문자열 (STR1, STR2, STR3) String.Empty로는 어떤 = null의 경우!?

이 상황을 어떻게 처리합니까?

답변

2

내가 도우미 메서드를 작성합니다

public static string Coalesce(string defaultValue, params string[] values) { 
     if (string.IsNullOrEmpty(defaultValue)) 
      throw new ArgumentException("defaultValue"); 

     foreach (var value in values) { 
      if (!string.IsNullOrEmpty(value)) 
       return value; 
     } 
     return defaultValue; 
    } 

사용 :

var data = StringHelpers.Coalesce("No text", s1, s2, s3, s4); 

특히 유용 아니지만, 당신도 "이"첫째 앞에 추가 (확장 메서드를 만들 수 있습니다 매개 변수), 더 "유창한"이름으로 변경하고 다음과 같이 쓸 수 있습니다.

var data = "No Text".IfEmptyOrNull(s1, s2, s3); 
+0

이것은 매우 어색한 사용 패턴입니다. 확장 방법이 어색한 사용 패턴임을 분명히해야합니다. – dotnetnate

+0

네, "1.minutes_from_now"표현식을 가진 루비처럼 보입니다 – Vasea

7

??이 아닙니다. 당신은 Linq를 사용하여 같은 것을 할 수 있습니다 : 당신은 String.IsNullOrEmpty()을 사용할 수 있습니다

string x = new[]{ str1, str2, str3, "No string" }.First(x => !string.IsNullOrEmpty(x)); 
+1

당신의 상태'x! = null'는 문제를 해결하지 않고 원래의 해결책을 복제합니다 :-) –

+0

@ Dan : 젠장, 아무도 그걸 보지 못했다고 생각했습니다.) – porges

+0

+1 깔끔한 트릭을! –

0

.

예.

String.IsNullOrEmpty(null)   => true 
String.IsNullOrEmpty("")    => true 
String.IsNullOrEmpty("hello, world!") => false