C# 检查对象是否已实例化

C# 检查对象是否已实例化,c#,.net,instantiation,C#,.net,Instantiation,我有一个由许多其他物体组成的物体!我正在尝试查找其中一个属性(枚举)的值,但找不到 现在,通常如果我想检查一个对象是否为null,我可以这样做 if (object == null) 但这会导致同样的错误 我试过了 if (object.Equals(null)) and the same error. 我收到的错误消息是objectName抛出异常:System.NullReferenceException:对象引用未设置为对象的实例 我试图确定我的对象是否实例化。现在,我可以把它放在试

我有一个由许多其他物体组成的物体!我正在尝试查找其中一个属性(枚举)的值,但找不到

现在,通常如果我想检查一个对象是否为null,我可以这样做

if (object == null) 
但这会导致同样的错误

我试过了

if (object.Equals(null)) and the same error.
我收到的错误消息是objectName抛出异常:System.NullReferenceException:对象引用未设置为对象的实例

我试图确定我的对象是否实例化。现在,我可以把它放在试一试中,如果它出错,那么我知道它不是,但对我来说,这感觉非常错误(尽管我可能没有选择)

我的另一个问题是这个项目不是我的,对每个人来说都是一个黑盒子,所以我不能对原始对象进行任何更改!这意味着,我所拥有的只是我所拥有的,一个对象,它可能被实例化,也可能没有被实例化,我需要一种方式来告诉你

除了试一试,我还有其他选择吗

编辑

因此,对象是

public partial class SaveBundleResponse 
{
    SaveBundleResponseHeader header;
}

public partial class SaveBundleResponseHeader 
{      
        private SaveBundleResponseHeaderStatus status;
}

public enum SaveBundleResponseHeaderStatus 
{        
        Success, Fail, OK, OtherStates
}
因此,最初创建SaveBundleResponse,然后通过“工作流”样式的环境传递实例,随着深入工作流,每个属性都会被“填充/更新”等等。但是,在少数情况下,从不设置枚举

问题是,我需要知道枚举的值(或者它是否为null)

我尝试使用的代码是

        if (saveBundleResponse.Header.Status // what ever happens, it fails at this point as Status is not initiated.

您应该能够使用以下内容:

SaveBundleResponse sbr = ...;
if (sbr.Header != null && !sbr.IsDisposed)
{
    //Do the work
}

这应该行得通(如果类不是控件,则不能使用IsDisposed检查)。

您能提供真实的代码吗?枚举在哪里?
如果(myObject!=null)
是检查对象是否已安装的正确方法。可能您正在调用对象的一个方法,该方法随后使用未实例化的字段,因此出现异常?如果您能够至少提供遇到问题的容器对象的原型,最好是它包含的子对象,这将非常有用。目前有许多因素可能会导致此问题。枚举不能为
null
-在某些情况下,可能是
header
null
。SaveBundlerResponse或.header为null header为null header为null吗?enum不是可为null的类型,因此应将其初始化为默认值,在他的情况下,默认值为0?我已经有一段时间没用C了,所以请原谅我的错误sense@Alex确定标头可以为空。这是一种引用类型。枚举对象的默认值是
(EnumType)0
。谢谢,这很有帮助。我的对象被实例化了,但我的属性(其中使用的属性具有自己的枚举属性)没有被实例化。谢谢你花时间和帮助。
if (saveBundleResponse != null)
{
    var header = saveBundleResponse.Header;
    if (header != null)
    {
        var status = header.Status;
    }
}