以前一直都以為.Net編譯器會吧默認參數編譯成重載的模式以供主調DLL調用,直到最近想擴展一個方法還不想影響以前的調用,于是就添加了默認參數。誰知道把方法所在DLL編譯發布以后發現程序直接拋出找不到Method的異常了,之后我把主調用的dll編譯了一下之后發現又能用了,這是什么鬼?
寫一個Demo驗證一下:


看一下運行結果:

再來看一下IL是長什么樣子的:

你妹的原來編譯器是直接通過直接給主調DLL賦默認值來調用默認參數方法的,并不是用重載!!!
所以如果你要擴展的方法有多個DLL在調用,并且你還不想提交那么多DLL的話,自己做個重載吧,慎用默認參數。
上午自己忙著去打Dota,沒看到自己竟然沒有設默認參數就截圖了事了,汗!傻逼了
截圖已更新,謝謝樓下各位提醒。
新聞熱點
疑難解答