夜光序言:
大多数时候我保持和善、友好和善解人意。可一旦触及底线,或触碰到了什么,我无法忍受的点,我的自私程度和刻薄程度,真的超乎想象。
正文:
我们通常的入口函数 static void Main(string [] args) 就是用数组来作形参的,它实际可以写成 static void Main(),不需要参数的传入。同样使用数组作为形参,调用普通方法函数时,有无params是有区别的:
- 1.带params关键字的数组形参,既可以接受数组(直接传数组名,应该是地址),也可以接受多个和形参同类型的值(不是数组形式),如有方法 public int test (params int [] array), int [] a=new int [2] 作为数组时可以 test(a) 来调用,也可以 test(1,2,3,4) 来调用。
- 2.不带params关键字的数组形参,如方法public int test (int [] array),不通过传值的方式调用,只能传数组的方式调用。
测试如下:(带params和不带params的方法只能存在一个,不能仅凭params来重载一个方法,故注释掉了一个,再测试时注释掉另一个。)
using System;
namespace GeniusTest01
{
public class Class55
{
static void test(int a, int b)
{
Console.WriteLine("a+b= {0}", a + b);
}
/* static void test(int[] list)
{
foreach(int i in list)
{
Console.Write("-{0}",i);
}
}*/
static void test(params int[] list)
{
foreach (int i in list)
{
Console.Write("+{0}", i);
}
}
static void Main()
{
test(1, 2);
int[] a = new int[] { 1, 2, 3, 4, 5 };
test(a);
test(1, 23, 4, 5, 6);
Console.ReadKey();
}
}
}