3

重複の可能性:
値型配列を params オブジェクト [] に変換できません

なぜですか

object h = new byte();

可能で、

object[] h = new byte[5];

ではありません?

バイト配列をオブジェクト配列にキャストする方法は?

ありがとう!

4

2 に答える 2

8

最初の例では、単一の値をボックス化しています。

2 番目の例では、配列全体を変換しようとしています。それはうまくいきません。object配列の各要素はobject変数です。byte配列の各要素はbyte変数です。彼らは表現を共有していません-あなたはそれをすることができません.

たとえば、バイト配列から新しいオブジェクト配列を簡単に作成できます。

object[] objects = bytes.Cast<object>().ToArray();

...しかし、バイト配列をオブジェクト配列のように扱うことはできません。

または、と互換性のあるタイプを使用できます。それは役に立ちますか?System.Arraybyte[]

byte[] bytes = ...;
Array array = bytes;
于 2012-11-08T00:02:29.290 に答える
2

コードで配列をキャストしようとすると、バイト型を保持する配列をオブジェクト型を保持する配列にキャストしているため、キャストは失敗します。配列が保持する型は同じではありません。値型をオブジェクト型にキャストすると、ボックス化されます (ボックス化解除はオブジェクトを値型に変換します)。object h = new byte();ボクシングです。配列コードでキャストを行うと、それはボクシングではないため、失敗します。

于 2012-11-08T00:04:29.300 に答える