剛發現Console.WriteLine
可以正確處理null
字符串 像Console.WriteLine((string)null)
;Console.WriteLine正確處理空字符串
我可以假設大多數類庫正確地處理空引用嗎?
剛發現Console.WriteLine
可以正確處理null
字符串 像Console.WriteLine((string)null)
;Console.WriteLine正確處理空字符串
我可以假設大多數類庫正確地處理空引用嗎?
嗯......是的。
您可以預期(幾乎)所有類都將正確處理空引用。
但是,我覺得你的「正確」意思與該作者的意思不同。
例如,如果您嘗試打開文件並通過null
打開文件的路徑,它不會默默失敗,它會引發異常。
如果這就是你所說的「正確處理」的意思,那麼當然可以。實際上,我希望所有類都能正確處理空引用。
但是不要指望程序就像沒有發生一樣。
號
這充分取決於你調用的方法。當您通過null
時,請參閱每種方法的MSDN文檔。
當調用別人的API或庫時,對null
進行假設是不安全的,特別是如果您沒有將其源代碼用作參考時。始終閱讀文檔。如果文檔不說,代碼防守。
但是,庫方法的編程方式是,當它們不接受null
時,它們會拋出一個異常,告訴您它不是有效的參數。
對。在調用別人的API或庫時,對null進行假設是不安全的,特別是如果您沒有將其源代碼用作參考。始終閱讀文檔。如果文檔不說,代碼防守。 – 2010-11-11 08:12:54
@Mike Clark - 確實如此。感謝您的補充,更新了答案。 – 2010-11-11 08:14:33
完全取決於「正確」和「方法」本身的含義。除非你的意思是「可以拋出一個異常,因爲它期待一個實際的字符串」,否則不。
通常,當參數(無論是字符串還是任何其他類型)都需要做某事時,該方法通常會在異常時崩潰,當該參數爲null時。
幾個例子:
在另一方面,當參數不需要方法通常會「吞青蛙」時,它的空,把它當作一些默認值,例如空字符串。 在Console對象的WriteLine方法的情況下,它並不真的需要該字符串,它只是將它寫入控制檯,因此它不在乎它是否爲空。
所以和其他人說的一樣,它取決於您嘗試使用哪種方法,並且在嘗試傳遞空值之前更好地閱讀。
順便說一句,在你描述的情況下,什麼_ incorrectling正確_意味着什麼?寫'空'或''? – 2010-11-11 08:14:57
不錯,三個答案,是的,不,也許。 :) – 2010-11-11 08:19:38
@jb - 願最好的人贏得:)。 – 2010-11-11 08:22:04