我是堆栈溢出的一个newby,所以请在我身上轻松一下!我正在深入阅读C#,但我遇到了一个我不相信的场景。对网络的快速搜索也没有发现任何结果。泛型方法的类型参数的类型推断
说我定义以下重载方法:
void AreEqual<T>(T expected, T actual)
void AreEqual(object expected, object actual)
如果我打电话AreEqual()
没有指定类型参数:
AreEqual("Hello", "Hello")
调用该方法的通用或非通用版本?泛型方法是在推断出类型参数的情况下调用的,还是调用方法参数隐式转换为System.Object
的非泛型方法?
我希望我的问题很清楚。提前感谢您的任何建议。
你当然可以写一些简单的代码来检查这个... – 2012-01-28 01:43:21
http://blogs.msdn.com/b/ericlippert/archive/2009/07/30/generics-are-not-templates.aspx – 2012-01-28 01:56:51
@米奇麦 - 真实的,但我不会做我的第一篇文章。它对其他人在这里看到答案很有用。 – zekesteer 2012-01-28 02:01:51