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