在The C# Programming language比尔·瓦格纳说:动态绑定VS类型推断
很多人混淆了类型推断动态bindig。类型 推断是静态绑定的。编译器在编译时确定类型 。例如:
var i = 5; //i is an int (Compiler performs type inference) Console.WriteLine(i); //Static binding to Console.WriteLine(int)
编译器推断出我是一个整数。所有绑定变量 我使用静态绑定。
现在,鉴于此信息,我自己编造的动态之情况:
dynamic i = 5; //Compiler punts
Console.WriteLine(i);//This is now dynamically bound
我们知道类型推断静态绑定。这意味着动态变量无法使用类型推断来确定类型。如何在不使用类型推断的情况下解决动态类型?
更新
要尝试,并在运行时,我们必须设法弄清楚我是什么类型的正确澄清......?因为我分配了文字5
,运行时可以推断i
是int
。不是那种类型推断而不是动态绑定?
动态的基础类型(这是一种语言结构,在元数据中除了属性外没有表示)是'System.Object'。这是C#编译器魔术,它允许您动态调用方法并访问其上的字段(在本例中为盒装整型),而无需自己进行反射。 – 2013-02-13 17:56:07