1

さて、私が次のようなメソッドを持っているとき

getPacket(params object[] inputs)
{

 }

入力配列はボックス化された変数の配列ですか、それとも単に元の型の配列ですか(たとえば、short、int、boolなどの複数の異なる型を送信します)

それらがボックス化されている場合、元のタイプを知らなくても、元のタイプへの実行時のボックス化解除を実行できますか?

ボックス化されていない場合、さまざまなタイプのスタック全体からバイト配列をまとめる単一のメソッドを作成できるようにしたいので、それがint、short、boolなどであるかどうかをどのように判断できますか。

別の質問ですが、配列内のオブジェクトは、メソッド呼び出しで渡されたのと同じ順序ですか?

4

2 に答える 2

2

配列内のオブジェクトは、メソッドに渡されたのと同じ順序になり、ソースパラメーターが値型の場合はボックス化されます。

isキーワードを使用して、各オブジェクトの基になるタイプを確認し、それに応じて動作することができます。次に例を示します。

static void Main(string[] args)
{
    Receive(1, true);
}

static void Receive(params object[] values)
{
    foreach (var v in values)
    {
        if (v is int)
        {
            // ...
        }
        else if (v is bool)
        {
            // ...
        }
    }
}
于 2012-07-09T10:56:35.620 に答える
0

オブジェクトの配列がある場合はそうです。たとえば、配列に整数を入れると、それらはボックス化されます。関係する実際のタイプを知らずにボックス化解除メソッドを知らないので、配列内のアイテムを実際に表す値にキャストする必要があります。

于 2012-07-09T10:56:53.843 に答える