空(非Null)对象检测

3
我确定这是一个非常初级的问题,但我似乎找不到信息...
我的程序中有一些对象序列化和反序列化。对象具有可空字段,其中之一是称为DefaultValue的字段,它是一个对象引用。
当在序列化之前该对象引用为空时,反序列化对象包含对空对象的引用。
如何检测此空对象?与null的比较失败,因为它引用了一个空的System.Object,与新Object的比较也是如此。
以下是一些伪代码以突出我的问题...
class MyObj
{
 public object DefaultValue {get; set;}
 public object AnotherValue {get; set;}
}

class Program
{
 internal static void Main()
 {
  MyObj obj = new MyObj();
  obj.AnotherValue  = "Some String";

  //Serialse object
  String serialisedObject = Serialise(obj);

  //Deserialse object
  MyObj deserialisedObj = Deserialise(serialisedObject);

  if (deserialisedObj.DefaultValue != null) //This will always be true :(
  {
   String default = deserialisedObj.DefaultValue.ToString();
  }

 }
}
1个回答

1

可能吧...

if ((deserialisedObj.DefaultValue != null)
    && (deserialisedObj.DefaultValue.GetType() != typeof(object)))
{
    // ...
}

是的,这看起来像是可行的... 我担心的是 DefaultValue 是 int(Int32)时的比较问题 - 但我认为这应该没问题吧? - Matt Fellows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接