将 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 时反映在变量中。
为什么在多维数组中使用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 时反映在变量中。