0

こんにちは私は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");
4

1 に答える 1

0

雨、

やろうとしていることを実行する代わりに、「is」または「as」キーワードを使用できます。

違いは、as演算子がキャスト操作に似ていることです。ただし、変換が不可能な場合、 as は例外を発生させる代わりに null を返します。次の式を検討してください。

expression as type

これは、式が 1 回だけ評価されることを除いて、次の式と同等です。

expression is type ? (type)expression : (type)null

使用方法の例as:

       Derived d = new Derived();

       Base b = d as Base;

対照的に、指定されたis式が null 以外の場合、式は true と評価され、例外をスローすることなく、指定されたオブジェクトを指定された型にキャストできます。

キーワードはis、式が常に true または常に false であることがわかっている場合、コンパイル時の警告を引き起こしますが、通常は実行時に型の互換性を評価します。

使用方法は次のisとおりです。

if (obj is MyObject)
{
}
于 2012-04-26T20:20:38.107 に答える