【发布时间】:2012-02-20 23:18:18
【问题描述】:
我是 Stack Overflow 的新手,所以请放轻松!我正在深入阅读 C#,但我遇到了一个我认为没有涵盖的场景。快速搜索网络也没有抛出任何结果。
假设我定义了以下重载方法:
void AreEqual<T>(T expected, T actual)
void AreEqual(object expected, object actual)
如果我在没有指定类型参数的情况下调用AreEqual():
AreEqual("Hello", "Hello")
调用的是泛型还是非泛型版本的方法?是通过推断类型参数调用泛型方法,还是通过隐式转换为System.Object 的方法参数调用非泛型方法?
我希望我的问题很清楚。提前感谢您的任何建议。
【问题讨论】:
-
你当然可以写一些简单的代码来检查这个......
-
@Mitch Wheat - 是的,但那样我就不必发表我的第一篇文章了。其他人在这里看到答案很有用。
-
@Michael Edenfield - 很好,我听说过关于 Eric Lippert 博客的好消息。
标签: c# generics types methods inference