簡體   English   中英

SerializationInfo實例永遠不會為空?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM