嗨我有一个从http响应中返回的流。我已将其反序列化为Object(obj),并希望检查obj的类型为MyObject或string或double。程序错了还是我的概念错了。请帮忙。
DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(Object));
Object Obj = obj.ReadObject(_stream) as Object;
Product p = new Product();
List<string> ls = new List<string>();
List<DisplayProduct> displs = new List<DisplayProduct>();
if (Obj.Equals(p))
Console.WriteLine("PRODUCT");
else if (Obj.Equals(ls))
Console.WriteLine("LIST OF STRING");
else
Console.WriteLine("DISPLAY PRODUCT LIST");
答案 0 :(得分:0)
雨,
您可以使用'is'或'as'关键字,而不是执行您要执行的操作。
不同之处在于as
运算符就像一个强制转换操作。但是,如果无法进行转换,则返回null而不是引发异常。请考虑以下表达式:
expression as type
除了表达式仅被计算一次之外,它等效于以下表达式。
expression is type ? (type)expression : (type)null
如何使用as
:
Derived d = new Derived();
Base b = d as Base;
相反,如果提供的表达式为非null,则is
表达式的计算结果为true,并且可以将提供的对象强制转换为提供的类型,而不会引发异常。
如果已知表达式始终为true或始终为false,则is
关键字会导致编译时警告,但通常会在运行时评估类型兼容性。
以下是您使用is
的方式:
if (obj is MyObject)
{
}