1

我很确定我知道这个问题的答案(你做不到),但我想看看我是否错过了什么。

如果我有课:

public class Foo
{
}

public class Bar : Foo
{
}

还有一个方法:

public Foo DoSomething()
{
  return new Bar();
}

我是否正确地说如果不执行该方法就无法知道 DoSomething 的“真实”返回类型是什么?意思是,如果我这样做:

MethodInfo mi = this.GetType().GetMethod("DoSomething", BindingFlags.Public | BindingFlags.Instance);
//at this point, mi.ReturnType will be of type "Foo".

如果不执行该方法并调查我返回的对象,就无法真正知道 DoSomething 实际上返回了一个 Bar,对吗?

4

2 回答 2

1

你是对的。不执行代码就无法知道实际的返回类型,因为实际的返回类型可能取决于仅在运行时才知道的因素,并且可能因执行而异(例如,根据传递给方法的参数或其他方法的返回值)。

于 2012-08-02T20:37:10.737 回答
0

正确的。

我会假设 DoSomething 方法的重点是返回一个特定的派生类型,并且能够将它用作 Foo 的一般用途。

在那种情况下,我不确定知道要返回的派生类型有什么好处,但这可能不是你的问题。:)

于 2012-08-02T20:39:12.333 回答