如下是一个判断最小值的Min静态方法:
class Util
{
//判断最小值
public static int Min(int[] paramList)
{
if (paramList == null || paramList.Length == 0)
{
throw new ArgumentException(("Util.Min:c"));
}
int currentMin = paramList[0];
foreach (var i in paramList)
{
if (i < currentMin) currentMin = i;
}
return currentMin;
}
}
为了使用Min方法来判断2个int值的最小值,需要这样:
int[] array = new int[2];//先构造数组
array[0] = 2;
array[1] = 3;
int min = Util.Min(array);
Response.Write(min);
为了使用Min方法来判断2个int值的最小值,需要这样:
int[] array = new int[3];//也先构造数组
array[0] = 2;
array[1] = 3;
array[2] = 1;
int min = Util.Min(array)
这样必须编写额外的代码(构造数组),如果用Params关键字类声明一个Params数组,编译器就会自动帮你生成一些这样的代码。
修改后的Min方法是:
class Util
{
//判断最小值
public static int Min(int[] paramList)
{
.... //其他跟前面的完全一样
}
}
Params关键字对Min方法产生的影响是:调用该方法时,可以传递任意数量的整数参数,例如:
int min = Util.Min(2,3);
这样编译器会帮我们将上述转换成如下代码:
int[] array = new int[2];
array[0] = 2;
array[1] = 3;
int min = Util.Min(array);
同样地,判断三个、四个整数最小值时:
int min = Util.Min(2,3,1);
int min = Util.Min(2,3,1,5);
要注意的是:
1: 只能为一维数组使用Params关键字,不能多维
//编译错误
public static in Min(params int[,] tableName)
2: 不能依赖Params关键字来重载方法
//编译错误
public static in Min(params int[ ] paramList)
public static in Min(int[ ] paramList)
3: 不允许为params数组指定ref或out修饰符
//编译错误
public static in Min(ref params int[ ] paramList)
public static in Min(out params int[ ] paramList)
4:params数组必须是方法最后一个参数
//编译错误
public static in Min(params int[ ] paramList, int i)
5: 非params方法总是优先于params方法
public static in Min(int a,int b)
public static in Min(out params int[ ] paramList)