我还没有升级到4.0,否则我会自己查看代码片段。但我希望有专家可以对此发表评论。
在下面的代码中,是否会在运行时调用相应的Print()
方法?在C#2010中以这种方式调用它甚至是合法的吗?
public void Test()
{
dynamic objX = InstantiateAsStringOrDouble();
Print(objX);
}
public void Print(string s)
{
Console.Write("string");
}
public void Print(double n)
{
Console.Write("double");
}
谢谢!
答案 0 :(得分:3)
是的,确实有效。它将在运行时检查动态的使用情况并调用适当的方法,但是几乎所有的编译时检查都会丢失,所以我确保这是你真正想做的事情。
答案 1 :(得分:2)
是的,您甚至可以这样做:
public dynamic InstantiateAsStringOrDouble() { return 0.5; }
或
public dynamic InstantiateAsStringOrDouble() { return "hello"; }
它将按预期工作。