将 params 关键字与多维数组一起使用

Using params keyword with a multidimensional array

为什么在多维数组中使用params关键字会出现编译时错误?

using System;

namespace Testing_Params_Keyword
{
    class Program
    {
        static void Main(string[] args)
        {
            //Calculate in invoked
            Calculate(25.4, 26.2, 27.8, 28.9);
        }

        //Declearing Calculate method
        public static void Calculate(params float [ , ] Money)//----** Here is error **
        {
            //Divide values of column1 by column2
            float row1 = Money[0, 0] / Money[0, 1];
            float row2 = Money[1, 0] / Money[1, 1];

            Console.WriteLine(row1 + row2);
        }//end of method Calculate
    }
}

报错

The params parameter must be a single dimensional array

为什么一定要是一维数组?

params 不是关于传递多维数据,而是关于将可变数量的参数传递给函数。由于该参数列表本质上是一维的,因此类型必须是一维数组。

因为 C# 编译器所做的一切,尽管很神奇,但背后必须有某种逻辑。 params 关键字只是创建一个数组,其大小是您传递的参数的数量。这是编译器可以建立的东西。但是,它不能推断出您想要的维数,甚至元素的数量每个维度。因此-您尝试做的事情永远无法编译。

这是因为 params 变量是基于命令行参数的,命令在按下 enter 后运行。此方法不允许多维,因此在编译器 kbows 时反映在变量中。