params 数组参数的解读 为什么:对于 params 只能在一个参数列表中使用一次 并且要放到最后
2012-12-05 17:08
274 查看
今天开始第二遍 过代码 突然被卡在了 数组参数的地方
数组参数在一个参数列表中 只能出现一次 并且要放在最后 同时要被params 修饰
然后想到前几天 明明 参数列表中可以有有多个参数 然后试了一下 发现可以 但是只能出现一个params
class Program
{
static void printf(int[] var1, params int[] var2)
{
foreach (int x in var1)
Console.WriteLine(x);
foreach(int y in var2)
Console.WriteLine(y);
}
static void Main(string[] args)
{
int[] var1={1,2,3,4,5};
int[] var2 = { 1, 2, 3, 4, 5 };
printf(var1, var2);
}
}
于是不解 用params 这种修饰的话 有什么好处
然后发现 下边有个例子 params 修饰的数组参数 可以通过将罗列 数组参数的形式表达参数 一下子豁然开朗 这样的话 就不用单独的创建一个数组 然后数组的对应位置 在分别用不同的变量赋值 这样省去了 很多麻烦 还节约了内存
然后又尝试了一下 如果不加params 的 数组做参数的话 可以不可 果然不行
当params 只出现一次的时候 即使 params 罗列的数组变量 和 之前的所有参数都用 逗号分隔开 不用特别的标注 vs 也可以识别出来
这时候又想到 那为什么要放到最后呢 放到中间也可以推倒出来啊 然后猜测 可能是当时开发的人员为了省力 放到最后 从左到右 一遍就能出结果
不用 从左到右 再从右向左 两遍排除 不是数组参数的 变量 但是这样判断起来过于麻烦
而且 如果有多个params 的话 就不可能判断出来了 例如 ( int int params int[] x int int params int[] y)
数组参数在一个参数列表中 只能出现一次 并且要放在最后 同时要被params 修饰
然后想到前几天 明明 参数列表中可以有有多个参数 然后试了一下 发现可以 但是只能出现一个params
class Program
{
static void printf(int[] var1, params int[] var2)
{
foreach (int x in var1)
Console.WriteLine(x);
foreach(int y in var2)
Console.WriteLine(y);
}
static void Main(string[] args)
{
int[] var1={1,2,3,4,5};
int[] var2 = { 1, 2, 3, 4, 5 };
printf(var1, var2);
}
}
于是不解 用params 这种修饰的话 有什么好处
然后发现 下边有个例子 params 修饰的数组参数 可以通过将罗列 数组参数的形式表达参数 一下子豁然开朗 这样的话 就不用单独的创建一个数组 然后数组的对应位置 在分别用不同的变量赋值 这样省去了 很多麻烦 还节约了内存
然后又尝试了一下 如果不加params 的 数组做参数的话 可以不可 果然不行
当params 只出现一次的时候 即使 params 罗列的数组变量 和 之前的所有参数都用 逗号分隔开 不用特别的标注 vs 也可以识别出来
这时候又想到 那为什么要放到最后呢 放到中间也可以推倒出来啊 然后猜测 可能是当时开发的人员为了省力 放到最后 从左到右 一遍就能出结果
不用 从左到右 再从右向左 两遍排除 不是数组参数的 变量 但是这样判断起来过于麻烦
而且 如果有多个params 的话 就不可能判断出来了 例如 ( int int params int[] x int int params int[] y)
相关文章推荐
- 给定一个数组,该数组存贮R,G,B三种字符,将该数组按RGB顺序排序,不能使用辅助内存空间,且只能遍历数组一次。
- 返回多个不同类型参数的值(out)可变参数一维数组( params )把值从方法中带出(ref) 方法递归(方法自己调用自己与循坏类似注意return每次只能跳出一个方法))
- 为什么对于类的const成员,只能使用初始化列表,而不能在构造函数内部进行赋值操作
- 使用数组做参数的一个陷阱(sizeof)
- 为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里面有效? 为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里
- PHP中获取我的城市列表,通过排序,通过A-Z的循环!数列出相同的首字母结果!,放到一个以A-Z为key的数组里面去,再返回我要的结果!
- 三个进程共享四个同类资源,这些资源的分配与释放只能一次一个。已知每一个进程最多需要两个资源,试问,该系统会发生死锁吗?为什么?
- 据库 'UFDATA' 已打开,并且一次只能有一个用户访问。 (Microsoft SQL Server,错误: 924)
- 数据库 ' 库名' 已打开,并且一次只能有一个用户访问
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- 数据库 'XXXX' 已打开,并且一次只能有一个用户访问。设置单用户 / 多用户
- 数组字符串系列之:判断一个输入字符串中的每个字符唯一,只能使用基本的数据结构
- 【CVTE】请使用js编写一个函数:chunk(arr,size),把一个数组arr按照指定的数组大小size分割成若干个数组块,传入的参数分别为数组
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。 提交
- C#类方法中使用数组参数params关键字的作用
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- Python面试题 之 Uniquify a list 不使用set去除一个列表中的重复项,并且保持原有的排列顺序
- 使用堆的方式弄出来一个数组为什么一定要delete[]
- 三色球排序的问题,相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组
- 匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢