【发布时间】:2014-11-29 12:51:53
【问题描述】:
考虑以下代码:
public class Test
{
public static implicit operator int(Test t) { return 42; }
public override string ToString() { return "Test here!"; }
}
var test = new Test();
Console.WriteLine(test); // 42
Console.WriteLine((Test)test); // 42
Console.WriteLine((int)test); // 42
Console.WriteLine(test.ToString()); // "Test here!"
为什么在前三种情况下我们有答案42,即使我们明确地转换为Test?implicit 运算符的优先级是否高于 ToString() ?
【问题讨论】:
-
事实上,确实如此。您可以尝试在Language Specification的以下主题中找到原因:6.4.4 用户定义的隐式转换。
标签: c# .net clr overloading operator-keyword