c# - params object[] 方法参数装箱了吗?

标签 c# object casting parameters boxing

好的,所以当我有一个看起来像这样的方法时

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/

相关文章:

c# - 从 ElementTree 的根传递元素作为 CommandParameter

c# - Windows 窗体事件 "On Select Tab"?

javascript - 如何访问字典中的特定元素?

c# - Asp.net:在 foreach 循环中处理 null

c# - 如何调用所有事件处理程序订阅者并获得他们的结果?

c# - 如何使用 Xamarin Form 以编程方式在现有网格上添加按钮或标签?

Javascript |从对象数组中删除不需要的数据

java - 如何将paintComponent()添加到JPanel

c++ - 多态与向下转型

ios - 从 AnyObject 转换为 CGColor?没有错误或警告