作者emn178 (小残)
看板C_Sharp
标题Re: [问题] 不定参数使用
时间Sun Apr 4 17:01:33 2010
※ 引述《fcouple (八杜妖妖嘛笑笑)》之铭言:
: 最近学到不定参数的方法,发现了一些事,请看程式码:
: using System;
: class Program
: {
: public static int addi(params int[] value)
: {
: int sum = 0;
: foreach( int i in value )
: sum += i;
: return sum;
: }
: public static void Main(string[] args)
: {
: int[] myArry = {1,2,3,4,5,6,7,8,9,10};
: Console.WriteLine("不定参数呼叫?"+addi(myArry)); //可以这样用吗?
: Console.WriteLine("不定参数呼叫:"+addi(1,2,3,4,5,6,7,8,9,10));
: }
: }
: 在 Main 里面,照理说我们这样呼叫 addi(1,2,3),参数随便给几个都行,但是我随意的
: 给了一个阵列 addi(myArry),结果,它也跑出一样的答案了。
: 我要问的是,不定参数不就是要给它一堆参数,而我在参数里传阵列进去,它竟然接受,
: 这是正常的吗?
: 既然阵列可以,我试了一下:addi(1,2,3,myArry) 这样传又会出错。
: 到底怎麽回事?
int addi(params int[] value)
可以看成接受
1. int addi(int a, int b, int c.....)
2. int addi(int[] value)
所以
addi(1,2,3) => addi(int, int, int)符合1
addi(myArry) => addi(int[]) 符合2
而你的
addi(1,2,3,myArry) => addi(int, int, int,
int[])
两者皆不符合,故出错
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.74.77
1F:推 fcouple:谢谢你,懂了 04/10 21:26