【发布时间】:2010-05-13 08:33:26
【问题描述】:
在C#4.0中,我们有动态类型,但是如何调用动态类型对象的静态方法呢?
以下代码将在运行时生成异常。 dynamic 对象来自 C# 类,但它可以是通过 DLR 来自其他语言的对象。重点不是如何调用静态方法,而是如何调用不能用C#代码创建的动态对象的静态方法。
class Foo
{
public static int Sum(int x, int y)
{
return x + y;
}
}
class Program
{
static void Main(string[] args)
{
dynamic d = new Foo();
Console.WriteLine(d.Sum(1, 3));
}
}
恕我直言,dynamic 是为了连接 C# 和其他编程语言而发明的。还有一些其他语言(例如Java)允许通过对象而不是类型调用静态方法。
顺便说一句,与 C#3.0 相比,C#4.0 的引入并没有那么令人印象深刻。
【问题讨论】: