명확히하려면 :
당신은 널 (null) 또는 그렇게이 코드를 시도하고 싶은 경우 boolean
결과 를 얻을 수 string.IsNullOrEmpty()
를 사용하여 값을 비교해야 이것은 주석에서 수정안에 대한 대답입니다. C# 디자이너는 부울 평가에 null을 구현하지 않기로 선택하는 이유는 무엇입니까?
에릭 Lippert의 게시물 "null is not false"에서 발췌 :
일부 언어는 값 유형 또는 참조 유형 또는 모두 널 (null) 값을 허용, 암시 적으로 부울로 처리 할 수 있습니다.
마찬가지로 null 값 유형에 대해서도 마찬가지입니다. 일부 언어에서는 null 값 유형이 암시 적으로 "false"로 처리됩니다.
C# 디자이너는 이러한 기능을 고려하여 거부했습니다. 먼저 참조 또는 null 입력 값 유형을 부울 (Boolean) 으로 처리하는 것은 혼란스러운 관용구이자 잠재적 인 풍부한 버그 소스입니다. 그리고 두 번째로는 의미 상으로는 null이 자동으로 번역됩니다. "이 값은 없습니다"또는 "이 값은 "입니다. -이 값은 논리적으로 거짓입니다.
이 특정 문장은 사용자의 string
예제를 다루지 만 암시적인 부울 평가가있는 다른 유형은 포함하지 않습니다.
그러나 부울로 평가되지 않는 정수와 같은 항목이 불량한 관용어이거나 지나치게 모호하다는 기치 아래 떨어지는 이유를 추측 할 수 있습니다.
null은 부울이 아닙니다. – Sayse
'param.days'의 유형은 무엇입니까? –
@Sayse : 예, 알았지 만, 제대로 평가되지 않은 다른 이유가 있습니다. 또는 bool이 nullable이 아닌 유형이므로 다른 방법이 없습니다. – ckv