2
爲什麼我不能將默認參數值賦予擴展方法的this
參數?C#擴展方法中「this」參數的默認值
public static User CheckLogin(this User user = null)
{
...
}
錯誤108無法爲「這個」參數
指定一個默認值,但是,當我寫類似下面,編譯成功。
public static User CheckLogin([DefaultValue(null)]this User user)
{
...
}
任何人都可以解釋爲什麼MS限制第一種默認參數分配,同時允許第二個?
我想說的擴展方法需要與一個對象的實例相關聯,因此默認的'this'似乎沒有任何意義。爲什麼你想要一個默認的'this'? – Bazzz
@Bazzz我只是想知道爲什麼VS沒有顯示任何編譯錯誤。我知道它不能用null來調用。 –
@SenJacob實際上,你可以調用一個擴展方法將一個空項目,因爲編譯器將其更改爲靜態方法調用。 '用戶u = null; u.CheckLogin();'。我傾向於在我的擴展方法中檢查'this'以避免使用clagers。 –