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 回答