반응형
.NET 참조 소스의 개체로 캐스팅
.NET 참조 소스 의 OperatingSystem.cs 파일을 살펴 보고이 코드를 50 행에 기록했습니다 .
if ((Object) version == null)
version
클래스의 객체 인 Version
의미 version
에서 유래가 Object
. 그렇다면 중복 캐스팅되지 Object
않습니까? 이것과 같지 않습니까?
if (version == null)
아니요, 동일하지 않습니다 . 연산자에 Version
과부하가 ==
걸리기 때문 입니다.
왼쪽 피연산자를 캐스팅하는 스 니펫 Object
은 다음과 같습니다.
if (Object.ReferenceEquals(version, null))
...에서 operator==
구현을 호출하는 대신 Version
. 어쨌든 첫 번째 조치로 nullity 검사를 할 가능성이 있지만 이것은 추가 수준을 우회합니다.
다른 경우에는 이것은 매우 중요한 차이를 만들 수 있습니다. 예를 들면 :
string original = "foo";
string other = new string(original.ToCharArray());
Console.WriteLine(original == other); // True
Console.WriteLine((object) original == other); // False
참고 URL : https://stackoverflow.com/questions/32736545/casting-to-object-in-net-reference-source
반응형
'developer tip' 카테고리의 다른 글
단일 스레드 프로그래밍 모델에서 비동기 프로그래밍은 어떻게 작동합니까? (0) | 2020.11.28 |
---|---|
JavaScript에서 "continue"문이 잘못된 이유는 무엇입니까? (0) | 2020.11.28 |
생성자를 호출하지 않고 객체 인스턴스를 만드시겠습니까? (0) | 2020.11.28 |
.Net의 NotSupportedException에 해당하는 Java (0) | 2020.11.28 |
Scala에서 기호를 사용하는 실용적인 예? (0) | 2020.11.28 |