나는 다음과 같은 코드를 사용하고 있습니다 :C#에서 빈 문자열 처리하기 ?? 운영자
string x = str1 ?? str2 ?? str3 ?? "No string";
그러나 무엇 이러한 문자열 (STR1, STR2, STR3) String.Empty로는 어떤 = null의 경우!?
이 상황을 어떻게 처리합니까?
나는 다음과 같은 코드를 사용하고 있습니다 :C#에서 빈 문자열 처리하기 ?? 운영자
string x = str1 ?? str2 ?? str3 ?? "No string";
그러나 무엇 이러한 문자열 (STR1, STR2, STR3) String.Empty로는 어떤 = null의 경우!?
이 상황을 어떻게 처리합니까?
내가 도우미 메서드를 작성합니다
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);
??
이 아닙니다. 당신은 Linq를 사용하여 같은 것을 할 수 있습니다 : 당신은 String.IsNullOrEmpty()
을 사용할 수 있습니다
string x = new[]{ str1, str2, str3, "No string" }.First(x => !string.IsNullOrEmpty(x));
당신의 상태'x! = null'는 문제를 해결하지 않고 원래의 해결책을 복제합니다 :-) –
@ Dan : 젠장, 아무도 그걸 보지 못했다고 생각했습니다.) – porges
+1 깔끔한 트릭을! –
.
예.
String.IsNullOrEmpty(null) => true
String.IsNullOrEmpty("") => true
String.IsNullOrEmpty("hello, world!") => false
이것은 매우 어색한 사용 패턴입니다. 확장 방법이 어색한 사용 패턴임을 분명히해야합니다. – dotnetnate
네, "1.minutes_from_now"표현식을 가진 루비처럼 보입니다 – Vasea