看幾個例子即可明白,優先調用的是明确定義的類型。當沒有比對的類型的時候,才會調用含有dynamic類的重載函數。
class program { static void main(string[] args) { int i = 3; f(i); } static public void f(dynamic d) { console.writeline("dynamic "); console.writeline(d); console.writeline(d.gettype().tostring()); } static public void f(int i) { console.writeline("int "); console.writeline(i); console.writeline(i.gettype().tostring()); } }
如果把i的類型改成dynamic,如下:
dynamic i = 3;
或者
var i = 3;
那麼得到的運作結果仍然是:
隻有當i的類型是重載中沒有的時候,才會調用含有dynamic的重載方法。 比如:
static void main(string[] args) { double i = 3; f(i); }