두 메서드는 한글로 해석하면 비어있다와 공백이다 정도의 아주 미묘한 차이로 해석된다. 이게 한글로 해석하면 미묘한 것이 공백의 사전적 정의에 "아무것도 없이 비어 있음."이 포함되어 있다. 결국 똑같이 해석되는 것처럼 보이지만 C#에서 프로그래밍적으로 두 메서드는 엄연히 다른 메서드다. MSDN에 따르면 String.IsNullOrWhiteSpace에 대한 설명에서 다음과 같이 나와있다.
IsNullOrWhiteSpace는 우수한 성능을 제공한다는 점을 제외하면 다음 코드와 유사한 기능을 하는 편리한 메서드입니다.
return String.IsNullOrEmpty(value) || value.Trim().Length == 0;
공백 문자는 유니 코드 표준에 의해 정의됩니다. IsNullOrWhiteSpace 메서드는 Char.IsWhiteSpace
메서드에 의해 true 값을 반환하는 모든 문자를 공백 문자로 해석합니다.
결국 String.IsNullOrWhiteSpace 메서드는 매개변수에 유니코드에 표준에 의한 "공백 문자"가 있더라도 true를 반환한다. 다음 예시를 보면 그 차이를 한눈에 이해할 수 있다.
string.IsNullOrWhiteSpace("\t"); //true
string.IsNullOrEmpty("\t"); //false
string.IsNullOrWhiteSpace(" "); //true
string.IsNullOrEmpty(" "); //false
string.IsNullOrWhiteSpace("\n"); //true
string.IsNullOrEmpty("\n"); //false
출처: https://smoh.tistory.com/412 [Simple is Beautiful.:티스토리]
'프로그래밍 언어 > C#' 카테고리의 다른 글
[C#] default와 new() 제약 조건 사용하기 (0) | 2024.12.16 |
---|---|
[C#] Attribute : Obsolete - 더 이상 사용하지 않거나 그럴 예정인 코드에 대해서 (0) | 2024.12.16 |
[C#] 포인터 관련 unsafe fixed 키워드 (0) | 2024.05.23 |
[C#] Marshal (0) | 2024.05.22 |
[C#] 관리되는, 관리되지 않는 코드 (0) | 2024.05.22 |