public IQueryable<Profile> FindAllProfiles(string CountryFrom, string CountryLoc)
{
....
}
對於上述方法,是否可以有可以爲空的輸入參數CountryFrom和CountryLoc?當我調用這個方法時,我必須傳入2個值,否則我可能會遇到異常。有任何想法嗎..?c#4.0可輸入參數爲空的方法
public IQueryable<Profile> FindAllProfiles(string CountryFrom, string CountryLoc)
{
....
}
對於上述方法,是否可以有可以爲空的輸入參數CountryFrom和CountryLoc?當我調用這個方法時,我必須傳入2個值,否則我可能會遇到異常。有任何想法嗎..?c#4.0可輸入參數爲空的方法
string
可爲空。你的意思是不可空?
string
是一個引用類型,因此已經可以爲空。你可以撥打FindAllProfiles(null, null)
,代碼將至少編譯罰款。當然,您需要確保方法主體適當地處理null參數,但這是輔助的。
或者,如果你只是想禁止調用運行時的FindAllProfiles
功能與任何空參數(?你),只是用後衛語句在方法的頂部,例如:
if (CountryFrom == null)
throw new ArgumentNullException("CountryFrom")
if (CountryTo == null)
throw new ArgumentNullException("CountryTo")
旁註:函數參數名稱應根據所有樣式指導書寫入camelCase。
你的問題問他們是否可以爲空,但它似乎暗示他們一定不能爲空。
因爲string
是一個引用類型,它們可以爲空(並且必須爲空)。沒有辦法強制(在編譯時)它們有一個非空值。
正如其他人所說,string
已經可以爲空....
由於您使用的是string
,你需要使用的參數,以驗證值實際存在之前測試對string.IsNullOrEmpty(yourString)
。
您需要檢查入口處的字符串,使用IsNullOrEmpty
可能是最好的方法(除非空字符串(「」)有效),那麼您可以返回null或設置默認值和進程,甚至可以拋出自己的異常(並在你的調用例程中捕獲它)。
我很想說,如果你有一個方法調用,你知道不能接受空參數,你檢查之前你調用方法和處理你的調用類。
我很困惑,字符串可以爲空... – heisenberg 2010-07-07 15:55:11
我認爲你的意思是你需要兩個字符串輸入,它們不應該爲空,即你如何強制這些非空。 – Lazarus 2010-07-07 15:55:29