之前一直都覺得.Net編譯器會吧默認參數編譯成重載的模式以供主調DLL調用,直到最近想擴展一個方法還不想影響之前的調用,因而就添加了默認參數。誰知道把方法所在DLL編譯發佈之後發現程序直接拋出找不到Method的異常了,以後我把主調用的dll編譯了一下以後發現又能用了,這是什麼鬼?blog
寫一個Demo驗證一下:get
看一下運行結果:編譯器
再來看一下IL是長什麼樣子的:it
你妹的原來編譯器是直接經過直接給主調DLL賦默認值來調用默認參數方法的,並非用重載!!!編譯
因此若是你要擴展的方法有多個DLL在調用,而且你還不想提交那麼多DLL的話,本身作個重載吧,慎用默認參數。擴展
上午本身忙着去打Dota,沒看到本身居然沒有設默認參數就截圖了事了,汗!傻逼了程序
截圖已更新,謝謝樓下各位提醒。方法