【发布时间】:2011-06-20 13:54:06
【问题描述】:
如果我有以下代码
private BaseMessage getMessage()
{
return new OtherMessage();
}
private void CheckType<T>(T type)
{
Console.WriteLine(type.GetType().ToString());
Console.WriteLine(typeof(T).ToString());
}
private void DoChecks()
{
BaseMessage mess = getMessage();
CheckType(mess);
}
为什么会输出不同的类型?有没有办法让类型推断使用正在传递的对象的实际类型?
【问题讨论】:
-
可以添加 Console.WriteLine 的输出吗?
-
你得到什么输出?你期望有什么输出?
-
我的输出是“BaseMessage”和“OtherMessage”
-
而且我会为两者都添加“OtherMessage”,我认为 c# 不使用运行时类型来推断泛型类型?
-
是的,你期待什么?我希望你得到的输出完全正确。
标签: c# .net generics c#-3.0 type-inference