使用变量通用委托类型对operator ==进行重载解析

时间:2014-03-14 14:42:22

标签: c# delegates operator-overloading overload-resolution

1 个答案:

答案 0 :(得分:0)

  

问题:但是为什么第四个WriteLine导致使用(对象,对象)重载?

因为它是编译器的唯一选择: - )

Cannot apply operator '==' to operands of type 'System.Func<System.ICloneable>' and 'System.Func<System.IConvertable>'
候选人是:

bool==(System.Delegate, System.Delegate) 
bool==(System.Func<System.ICloneable>, System.Func<System.ICloneable>)
bool==(System.Func<System.IConvertable>, System.Func<System.IConvertable>)

所以使用你的(对象,对象)是编译器找到的最佳选择。

同样适用于行动

Cannot apply operator '==' to operands of type 'System.Action<string>' and 'System.Action<System.Uri>'
候选人是:

bool==(System.Delegate, System.Delegate) 
bool==(System.Action<string>, System.Action<string>)
bool==(System.Action<System.Uri>, System.Action<System.Uri>)