[英]SerializationInfo Instance Is Never Null?
我正在編寫自定義異常並為它們實現序列化。 我注意到,如果我在訪問SerializationInfo實例之一之前對其進行空檢查,則ReSharper會告訴我該檢查是多余的,並且該實例不為空。 它不是值類型,但在參考源上瀏覽時發現沒有默認構造函數。 這是ReSharper如何判斷它不會為空嗎? 還有其他原因嗎? 這可能是錯誤嗎?
我認為這是因為您調用了基本Exception類的構造函數。 像這樣:
protected SomeException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
if (info != null)
{
// Some work...
}
}
Resharper知道內部的基本構造函數會檢查info參數。 我認為這符合官方的MSDN文檔:
例外:
ArgumentNullException-info參數為null。
SerializationException-類名稱為null或HResult為零(0)。
if (info == null)
throw new ArgumentNullException("info");
如果調用了基本構造函數,則將獲得一個值或異常。
因此,瑞沙珀說,表達永遠是正確的。 這次是正確的,因為文檔很可能永遠不會更改。 但是在許多其他情況下,我不喜歡Resharper的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.