使用params关键字和多维数组

问题描述 投票:1回答:3

当我们将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
    }
}

给我错误

params参数必须是单维数组

为什么它必须是单维数组?

c# arrays multidimensional-array params
3个回答
8
投票

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


6
投票

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


-2
投票

这是因为params varible基于命令行参数,其中命令在按Enter后运行。此方法不允许多个维度,因此在编译器解决此问题时会反映在变量中。

© www.soinside.com 2019 - 2024. All rights reserved.