在c#对象实例化中,如果捕获异常需要Null检查

本文关键字:捕获异常 Null 检查 如果 对象 实例化 | 更新日期: 2023-09-27 18:05:03

我一直在寻找stackoverflow,但还没有看到答案。注意:我确实在c++中看到了一些不错的反应,但c#中没有。

检查空if (reader == null)是否有任何好处,或者导致它为空的问题是否已经导致异常使if (reader == null)不可达(reader == null为真)?

try
{
    var reader = new PhotoReader();
    if (reader == null)
    {
        throw new InvalidOperationException("PhotoReader could not be created.");
    }
}
catch (Exception ex)
{
    // let user know failed object creation, etc.
    <...>
}

在c#对象实例化中,如果捕获异常需要Null检查

不,在c#中没有办法得到null作为构造函数调用的结果。

构造函数本身可能抛出异常,但无论如何它都会中断你的执行流程。

您通过分配类构造函数的结果来实例化reader的事实意味着它永远不会为空,因此检查是不必要的。