2011-01-10 59 views
3

我們都知道(或多或少)關於String.Empty和null之間的區別。我仍然沒有決定在「平常」開發中我有什麼更好的(我的意思是開發ASP.NET應用程序的服務器端部分,WinForms應用程序 - 所有這些都是C#.NET代碼),但我看到並閱讀了很多有關的文章。String.Empty或null:從服務中返回「Error」字段有什麼更好?

但我沒有看到比較從服務(ASP.NET WebService或WCF服務)返回字符串值時,最好使用什麼。

什麼是你的建議,我應該返回null或的String.Empty:

  1. 當我需要返回「錯誤」消息(null或空將意味着「沒有錯誤」);
  2. 當我需要返回「電子郵件」字段值(空或空將意味着'未指定電子郵件)。

任何想法都歡迎。

回答

3

這都是品味,風格和一致性的問題。你有其他服務已經返回null /空嗎?如果是這樣,最好匹配它們。否則,在我個人看來,空比空更好。由於null作爲更好的定點值。一個空字符串可能會被視爲發生錯誤,但不會返回錯誤詳細信息。

+0

這是一個很好的觀點:一個空字符串可能被視爲發生了錯誤,但沒有返回錯誤細節。謝謝 – Budda 2011-01-10 16:14:27

0

總是返回string.Empty而不是null

然後,如果使用service方法的代碼調用對服務返回的字符串的操作,則不必擔心NullReferenceException

重複出現的空檢查會讓您的代碼看起來很難看,也很難閱讀。

+2

防禦性編碼會建議你檢查null的返回值。 – cjk 2011-01-10 16:14:41

0

NULL和string.empty在純請求表單中以相同的方式表示。不同的是XSD映射,關於設置nillable =「true」與否。

更好的請求可能會返回一個「無效」結果,以便它不會被您的服務的任何第三方使用者誤解。

1

通常我會使用哪個返回值與其他代碼處理這種情況的方式更一致。你描述的情況當然可以用任何方式;在我看來,沒有錯誤時返回null的錯誤信息更有意義,而電子郵件作爲空字符串更有意義(因爲電子郵件未被輸入/指定)。

0

從概念上說,Null表示未定義的值。爲了這個參數的緣故,假設你有一個標誌,表明用戶是否有電子郵件地址。如果此標誌未設置,則Null將是電子郵件地址的適當值。如果標誌被設置,空字符串將表示沒有提供電子郵件地址。

有了一個錯誤信息,我會再次說空值表示未定義,例如,沒有錯誤要報告。空字符串可能表示發生了錯誤,但由於某些原因尚未提供詳細信息。

但是,只要你在服務中保持一致,或者應該沒問題。

相關問題