누군가이 토론 스레드 에서 아무 것도 문자열을 만들 수 없다고 말했습니다 .
(내 생각에는 좋은 문구입니다). 그러나 예- 다음 예제와 같이 :-) 할 수 있습니다 .
var x = null + (string)null;
var wtf = x.ToString();
잘 작동하고 전혀 예외를 throw하지 않습니다. 유일한 차이점은 널 중 하나를 문자열로 캐스트해야한다는 것입니다. (문자열) 캐스트 를 제거 하면 예제는 여전히 컴파일되지만 런타임 예외가 발생합니다. "연산자 '+'는 피연산자에 대해 모호합니다. '<null>'및 '<null>' "을 입력하십시오.
NB 위의 코드 예제에서 x의 값은 예상대로 null이 아니며 피연산자 중 하나를 문자열로 캐스팅 한 후에 실제로는 빈 문자열입니다.
또 다른 흥미로운 사실은 C # / .NET 에서null
다른 데이터 형식을 고려할 때 처리 방식 이 항상 동일하지는 않다는 것 입니다. 예를 들면 다음과 같습니다.
int? x = 1; // string x = "1";
x = x + null + null;
Console.WriteLine((x==null) ? "<null>" : x.ToString());
코드 스 니펫 의 첫 번째 줄 에 대해 : value를 포함 x
하는 nullable 정수 변수 인 경우 결과를 다시 얻습니다 . 이 값 (같은 주석 참조) 문자열 인 경우 에, 당신은 얻고 다시보다는 .int?
1
<null>
"1"
"1"
<null>
NB 또한 흥미로운 점 : var x = 1;
첫 번째 줄에 사용 하는 경우 런타임 오류가 발생합니다. 왜? 할당은 변수 x
를 datatype으로 변환하므로 int
nullable은 아닙니다. 컴파일러는 int?
여기서 가정하지 않으므로 null
추가 된 두 번째 줄에서 실패합니다 .
null.ToString()
의 이름이 주어진다는 것이 특별하다는 것을 알게되었습니다wtf
. 왜 놀랍습니까? 처음부터 호출 할 것이 없으면 인스턴스 메소드를 호출 할 수 없습니다.