2017-11-15 16 views
-1

.NET Reference 소스를 탐색하면서 https://referencesource.microsoft.com/#mscorlib/system/delegate.cs,196에서 복사 된 다음 코드 조각을 찾았습니다..NET Delegate 이상한 최적화

public static Delegate Combine(Delegate a, Delegate b) 
    { 
     if ((Object)a == null) // cast to object for a more efficient test 
      return b; 

     return a.CombineImpl(b); 
    } 

공지 사항 이상한 (Object)에 캐스팅. 이 이유는 Delegate== 연산자 오버라이드를 사용하는 것이 아니라 Object의 연산자를 사용하는 것으로 가정합니다. 그러나 Object 코드를 탐색 할 때 ==의 정의를 찾을 수 없습니다.

질문은 다음과 같습니다

Object

==가 정의되는 경우, 그것은 행동 무엇인가? docs에서

+0

[This (https://stackoverflow.com/a/7346086/3181933)? – john

답변

1

: true는 두 개의 피연산자가 동일한 개체를 참조 경우

문자열 이외의 참조 유형의 경우, == 돌아갑니다.

// Reference equality: different objects, 
// same boxed value: False. 
object s = 1; 
object t = 1; 
Console.WriteLine(s == t);