空(非空)对象检测

时间:2010-10-04 13:59:23

标签: c# .net

我确定这是一个非常棒的问题,但我似乎无法找到这些信息......

我的程序中出现了一些Obejct serialisatino和反序列化。对象具有可空字段,其中一个字段是名为DefaultValue的字段,并且是对象引用。

在序列化之前此对象引用为null时,反序列化对象包含对空对象的引用。

检测此空对象的最佳方法是什么?与null的比较失败,因为它引用了一个空的System.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 个答案:

答案 0 :(得分:1)

也许......

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