好的,所以当我的方法看起来像
时getPacket(params object[] inputs)
{
}
输入数组是一个盒装变量数组还是仅仅是原始类型的数组(我发送多个不同类型,例如short,int,bool)
如果它们是盒装的,你可以在不知道原始类型的情况下对原始类型进行运行时拆箱吗?
如果它们没有盒装,我怎么能判断它是int,short,bool等,因为我希望能够创建一个单独的方法,将来自不同类型的整个堆栈的字节数组合在一起。 / p>
另一个问题是,数组中的对象是否与方法调用中传递的顺序相同?
答案 0 :(得分:2)
数组中的对象将与它们传递给方法的顺序相同,如果source参数是值类型,它们将被装箱。
您可以使用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)
{
// ...
}
}
}
答案 1 :(得分:0)
如果你有一个对象数组,那么是的,如果你把整数放在数组中,它们将被装箱。在不知道所涉及的实际类型的情况下,我不知道任何拆箱方法,因此您必须将数组中的项目转换为它们实际代表的任何值。