2010-05-28 4 views

답변

6

당신이 중 하나를 사용할 수 있지만, 정식 방법은 가치를 그것을

string.Empty 
5

이럴을 할당하는 가장 좋은 방법은 당신이 빈 문자열하려는 경우 String.Empty로로 할당하는 것입니다 (그리고 null이 아님).

1

문자열과 관련된 작업에 따라 다릅니다. ""로 설정하면 유효한 객체이므로 문자열을 기대하는 일부 함수에 전달할 때 null 참조 예외가 발생하지 않습니다. 그러나 (if) (if (str == null))을 수행 할 수있는 능력이 없어지고, 런타임은 문자열 비교를 수행하는 함수를 대신 호출합니다.

+2

그래도 String.IsNullOrEmpty (str)로 테스트 할 수 있습니다 .... – klabranche

+0

네,하지만 다른 함수 호출이 필요합니다. 이상적으로는 함수 호출이 필요없는 * null이 아닌지 확인하여 문자열에 값이 있는지 여부를 확인할 수 있어야합니다. – cHao

+0

True @cHao하지만 문자열이 비어 있거나 null인지 여부를 제어/보장 할 수 있습니까? 종종 뭔가 다른 곳에서 입력되는 경우에는 그럴 수 없습니다.이 경우에는 방어적인 코드를 사용합니다. 물론 null이 아닌 빈 문자열은 코드에서 다른 의미를 나타냅니다. :-) – klabranche

4

상황에 따라 다릅니다. 단순히 할당하려는 경우 문자열을 null로 두는 것이 좋습니다. 참조가 널이고 처음으로 널인지 확인하기를 원하지 않으면 추가 조치를 수행 할 컨텍스트에서이 참조를 사용하는 경우 빈 문자열이 더 나을 수 있습니다. 나는 문자열 매개 변수를 얻고 그것을 추출하고 싶을 때 종종 이것을 할 것이다. 빈 문자열이 유효한 값이 될 것입니다 당신이 법적 값으로 빈 문자열에서 잘못된 행동을 구별해야하는 경우

한편
public string Foo(string bar) 
{ 
    bar = bar ?? string.Empty; 

    return bar.ToLower(); 
} 

, 당신은 널두고 할 수 있습니다.

public string Foo(string bar) 
{ 
    return bar == null ? null : bar.ToLower(); 
} 
+0

마지막 줄은 return bar == null이어야합니까? null : bar.ToLower(); –

+0

+1은 절대적으로 옳은 (* "의존적"*) 것이지만, -1은'this'를 참조하지 않을 때 정적 인 메소드를 만들지 않기 때문에 -1입니다. (농담, 여전히 +1을 얻습니다.) –

+0

@tehMick - 편집 해 주셔서 감사합니다. 그게 내 안경을 쓰지 않기 위해 얻는 것입니다. 늙어가는 것은 정말 고통 스럽지만 대안이 될 수 있습니다. – tvanfosson

관련 문제