为什么不能用数组做函数的参数?
class Program
{
static void f(System.Int32[])//为什么是编译错误?
{
}
static void Main(string[] args)
{
var s = new[] { 1, 2, 3 };
Console.WriteLine(s.ToString());//打印System.Int32[]
f(s);
}
}上面的小程序会有便衣错误,f的参数不能是这种形式。
问题,既然s就是System.Int32[],那么为它的类型还"不能"作为参数传递的类型呢,必须要转成其他的类型才可以? 这个是.net的运行时限制还是C#语言本身的某种限制?
谢谢。
相关推荐
C语言中二维数组作为函数参数来传递的三种方法
主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
函数指针、函数名、二维数组指针做形参
函数指针、函数名、二维数组指针做形参时的要注意的地方
C语言中数组作为函数的参数以及返回值的使用简单入门
主要介绍了C语言中数组作为函数的参数以及返回值的使用简单入门,这里以一维数组作为基本条件进行例子讲解,需要的朋友可以参考下
关于数组做函数参数的问题集合汇总
首先是数组元素作为函数的实参,这和直接用多个变量作为函数的实参在用法上没有什么差别。 作为例子的代码: 代码如下:#includeusing namespace std;int main(){ int max(int a,int b); int a[2],m; a[0]=1; a[1]=2; m=max(a[0],a[1]); cout<<m; return 0; }int max(int a,int b ){ if(a<b)a=b; return a;}输出结果是:2 然后,是用数组名作为函数参数,数组名其实代表的是数组
c++将数组名作为函数参数对数组元素进行相应的运算
用数组名做函数参数与用数组元素作实参有几点不同: (1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参两者类型不一致时,将会发生错误。 (2)用普通变量或下标变量作函数参数时,形参变量和实参变量都是由编译系统分配的两个不同的内存单元。在函数调用时进行的值传递是把实参变量的值赋予形参变量。在用数组名做函数参数时,不是进行值的传递,即不


