踩了一個炕:慎用默認參數

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

寫一個Demo驗證一下:get

image

image

看一下運行結果:編譯器

image

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

image

你妹的原來編譯器是直接經過直接給主調DLL賦默認值來調用默認參數方法的,並非用重載!!!編譯

因此若是你要擴展的方法有多個DLL在調用,而且你還不想提交那麼多DLL的話,本身作個重載吧,慎用默認參數。擴展

 

上午本身忙着去打Dota,沒看到本身居然沒有設默認參數就截圖了事了,汗!傻逼了01B46668程序

截圖已更新,謝謝樓下各位提醒。方法

相關文章
相關標籤/搜索