好的,所以当我有一个看起来像这样的方法时
getPacket(params object[] inputs)
{
}
输入数组是装箱变量的数组,还是只是原始类型的数组(我发送多种不同类型,例如,short、int、bool)
如果它们已装箱,您可以在不知道原始类型的情况下对原始类型进行运行时拆箱吗?
如果它们没有装箱,我如何判断它是 int、short、bool 等,因为我希望能够创建一个方法,将来自不同类型的整个堆栈的字节数组组合在一起。
另一个问题,数组中对象的顺序是否与方法调用中传递的顺序相同?
最佳答案
数组中的对象将按照它们传递给方法的顺序排列,如果源参数是值类型,它们将被装箱。
您可以使用 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)
{
// ...
}
}
}
关于c# - params object[] 方法参数装箱了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11393624/