在C#4.0中,我們有動態類型,但是如何調用動態類型對象的靜態方法?如何在動態類型中調用C#4.0中的靜態方法?
下面的代碼會在運行時產生異常。對象來自C#類,但它可能是通過DLR從其他語言的對象。重點不在於如何調用靜態方法,而是如何調用無法在C#代碼中創建的對象的靜態方法dynamic。
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));
}
}
恕我直言,動態的發明填補C#等編程語言。還有一些其他語言(例如Java)允許通過對象而不是類型來調用靜態方法。
順便說一句,與C#3.0相比,C#4.0的引入並不那麼令人印象深刻。