2013-03-30 24 views
2

下面顯示的代碼顯示了方法Get,該方法獲取字符串search,其默認值爲:""具有默認值的C#參數如何爲空?

Image showing null value for a parameter that has a default value

如何能值可能爲空時search具有非空默認值,並沒有改變?

+5

如果參數存在(但爲空),則不會使用默認值。 –

+0

你如何調用Get for MainView? –

+0

由於這是Web API,因此您可能需要檢查原始請求以查看傳遞的值。 –

回答

12

當搜索具有非空默認值並且從不更改時,值如何可能爲空?

如果您明確地將null傳遞給方法(或者爲null的變量),則不使用默認值。

僅當您調用方法而沒有使用參數時,纔會使用默認值,在這種情況下,編譯器會爲您填充默認值。如果您使用某種方法調用該方法,包括null或對象變量爲null,那麼您將在那裏獲得空值。

+1

值得一提的是,如果方法是FooCorp.DLL且BarCorp.DLL是調用者,並且FooCorp改變了方法的默認值,那麼來自BarCorp.DLL的調用將繼續使用舊值,除非該程序集也被重新編譯。 –

+1

非常真實 - 正如我所說的,編譯器在編譯時「填充」了默認*,這是缺省參數的一個缺點。 –