私は、カスタム例外を記述し、それらのためにシリアライズを実装することを面倒です。私は、メンバーの1人にアクセスする前にSerializationInfoのインスタンスをnullにチェックすると、ReSharperはチェックが冗長であり、インスタンスがnullではないことがわかっていることに気付きました。値の型ではありませんが、Reference Sourceを突き止めたところでは、デフォルトのコンストラクタはありません。 ReSharperがnullでないと言うことができるのはこれですか?何か別の理由はありますか?これはおそらくバグでしょうか?SerializationInfoインスタンスは決してNullではありませんか?
2
A
答えて
0
基本Exceptionクラスのコンストラクタを呼び出すためだと思います。このような何か:
protected SomeException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
if (info != null)
{
// Some work...
}
}
ReSharperのは情報パラメータのためにその内部でベースのコンストラクタチェックを知っています。私はそれが公式MSDN公式に従っていると思う:
例外:
ArgumentNullException - infoパラメータがnullです。
SerializationException - クラス名がnullまたはHResultがゼロ(0)です。
if (info == null)
throw new ArgumentNullException("info");
ベースコンストラクタが呼び出された場合、値または例外が発生します。
Resharperは式が常に真であると言います。そして今度は、ドキュメントはほとんど決して変更されないので正しいです。 しかし、私は多くの場合、Resharperが示唆しているものは好きではありません。
関連する問題
- 1. jskeryはnullではありません。
- 2. 新しいインスタンスはインスタンス自体ではありません
- 3. savedInstanceStateはnullではありませんが、データはありません
- 4. JSONオブジェクトではありません:null
- 5. C#:オブジェクトはnullで、nullではありません
- 6. 'position()。top'はnullまたはオブジェクトではありませんか?
- 7. タイプ(インスタンス)はインスタンスではありません.____ class__?
- 8. Android:エラーはありませんが、行の最後にnullオプションを解決できませんでした
- 9. PHPUnit_Framework_Exception:PHPUnit_Framework_TestCase :: $ nameはnullであってはなりません
- 10. スプリングバッチ - リソースはnullであってはなりません。
- 11. アンドロイドスタジオピカソjava.lang.IllegalArgumentException:ターゲットはnullであってはなりません
- 12. ResultSetインスタンスはnullではありませんがnext()呼び出しはNullPointerExceptionをスローします
- 13. JMLはnullではありませんか?
- 14. チェックデートはnullではありませんか? (レール、arel)
- 15. なぜJavaScriptプリミティブはオブジェクトのインスタンスではありませんか?
- 16. Javaは決定的ではありませんか?
- 17. 'div_element'はnullまたはIE7のオブジェクトではありません
- 18. IE8:JavaScriptがnullかオブジェクトエラーではありませんか?
- 19. エラーを理解しています "値はnullではありません"エラー
- 20. ポップアップが決して閉じることはありません
- 21. Androidのメニュー項目showAsActionは決してありません
- 22. IllegalArgumentException:権限リストがnullであってはなりません
- 23. IE8 Javascript: '2'がnullまたはオブジェクトではありません
- 24. 'length'がnullまたはオブジェクトではありません
- 25. Ext.elCache [...]。events 'がnullまたはオブジェクトではありません
- 26. '$ .signalR.transports'がnullまたはIE8のオブジェクトではありません
- 27. CascadingDropDownエラー - 'options'がnullまたはオブジェクトではありません
- 28. XMLHttpRequest.responseは実際にはnullではありません。
- 29. NULLではありません、次の列からのデータ
- 30. C#公開リストがnullではありませんか?
この文の前にコード内の他の場所で既に使用されていますか? –
@BenjaminDrolet - これは、同じパラメータを持つ基本Exceptionコンストラクタから派生したコンストラクタのパラメータとして使用されています。これは、基本メソッドGetObjectDataのオーバーライドでパラメータとしても使用されています。 – bubbleking
@bubbleking [this](http://stackoverflow.com/questions/5067819/how-does-resharper-know-expression-is-always-true)はおそらくあなたの質問に答えます – galenus