2011-01-19 11 views
-4

私のコードでは、区画の区域は、キャストまたは変換?? (List<int>)****を使用してキャストまたは変換

static List<int> b; 
MemoryStream c = new MemoryStream(); 
BinaryFormatter g=new BinaryFormatter(); 
g.Serialize(c,b); 

byte[] ui= c.ToArray(); 
c.Position = 0; 
List<int> hj = (List<int>)g.Deserialize(c); 
+0

何のプログラミング言語?適切なタグを付けてください。 –

+5

これは何ですか、私も... ...? –

答えて

1

あなたは(List)g.Deserialize(c)を書くことによってキャストしています。

あなたは演算子「である」を使用してキャストしたりすることができない場合は、いつでも確認することができます:あなたはそれを達成することができ、あなたのコードで

ClassA obj1 = new ClassA(); 
ClassB obj2 = new ClassB(); 

if(obj1 is ClassB) { 
//you can cast 
} 

if(g.Deserialize(c) is List<int>) { 
List<int> hj = (List<int>)(g.Deserialize(c)); 
} 
+0

チェックを変換する方法がありますか? –

+1

ようこそ。 – deadlock

+2

@mehdi_csharp:あなたの問題を解決した場合、回答を受け入れたものとしてマークしてください。 – adamjford

1

あなたが非直列化されたオブジェクトがターゲットの型にキャストできない場合に失敗しますキャストを行っています。キャストはSystem.Convertとは関係ありません。型から別のSystem.Convertに変換するには、それを行う方法を知っていなければなりません(これは基本型に対して行われます)。または、カスタム型はIConvertibleを実装する必要があります。

関連する問題