黑马程序员技术交流社区

标题: 关键字params的使用 [打印本页]

作者: 杨廉壬    时间: 2012-3-13 17:32
标题: 关键字params的使用
params的具体用法及用途
作者: 柏云杉    时间: 2012-3-13 17:44
当不确定方法带人参数的个数时用到 params。
比如 void ShowMsg(params string[] s);
string数组的元素个数不确定  要用params来修饰。
作者: 原世功    时间: 2012-3-13 17:52
params是可变的方法参数,也称数组型参数,适合于方法的参数个数不知的情况,用于传递大量的数组集合参数;当使用数组参数时,可通过使用params关键字在形参表中指定多种方法参数,并在方法的参数表中指定一个数组!
形式为:方法修饰符 返回类型 方法名(params 类型[] 变量名)
作者: 肖腾宇    时间: 2012-3-13 18:41
同上
补充:
1有params修饰的数组在传参数的时候不能传数组只能传参数  像myFaction(参数a,参数b,参数c1,参数c2,参数c3) 参数c  就是有params修饰的数组
2,params修饰的参数要是方法参数的最后一个参数  myFaction(参数a,参数b,params 参数c)
作者: 王长森    时间: 2012-3-13 22:42
本帖最后由 王长森 于 2012-3-13 22:44 编辑

1:params可变参数
2:方法修饰符 返回类型 方法名(params 类型[] 变量名)
//两个数比较大小
            Console.WriteLine("----------------------两个数比较大小----------------------");
            Console.WriteLine("请你输入a的值:");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("请你输入b的值:");
            int b = int.Parse(Console.ReadLine());
            int max = 0;//存取最大的值
            int min = 0;//存取最小的值
            if (a < b)//判断两数的大小,大的赋值给max,小的赋给min
            {
                max = b;
                min = a;
            }
            else
            {
                max = a;
                min = b;
            }
            Console.WriteLine("最大数为{0}", max);//输出最大值
            Console.WriteLine("最小数位{0}", min);//输出最小值
            //上面仅仅是两个数,那假如是10个数或更多的数怎么办呢~这 让我想到了数组

            //int max = 0;//存取最大的值
            //int min = 0;//存取最小的值
            int[] numbers = new int[10] { 12, 56, 34, 3, 23, 1, 56, 78, 87, 100 };
            max = numbers[0];
            min = numbers[0];
            for (int i = 1; i < numbers.Length; i++)
            {
                if (max < numbers)
                {
                    max = numbers;
                }
                if (min > numbers)
                {
                    min = numbers;
                }
            }

            Console.WriteLine("最大数为{0}", max);//输出最大值
            Console.WriteLine("最小数位{0}", min);//输出最小值
            /*
           *虽然可以用数组来比较更多的数,比前面要灵活一点,谁知道用户
           *真正用的的时候会拿多少数来比较 ~ 而且这个只能比较int类型 ,
           *所以说还是有一定的局限性,这有让我想到了Prarms的可变参数

             *
             */
           Util.MaxAndMin(12,34,54,5,4,78,56,4,32,2,89,67,4,2,23,56,6,4,2,78,100);//测试代码
           Util.MaxAndMin(12.3,56.4,34,90.3);



//下面就是封装好了的一个方法,这样一来为程序增加了很强的扩展性
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 类
{
    class Util
    {
        public static void MaxAndMin(params int [] numbers)//这里就是所谓的Params的方法声明
        {
            if (numbers == null || numbers.Length == 0)
            {
                Console.WriteLine("数组为初始化");
            }
            int max = numbers[0];
            int min = numbers[0];
            for (int i = 1; i < numbers.Length; i++)
            {
                if (max < numbers)
                {
                    max = numbers;
                }
                if (min > numbers)
                {
                    min = numbers;
                }
            }
            Console.WriteLine("最大数为{0}", max);//输出最大值
            Console.WriteLine("最小数位{0}", min);//输出最小值
        }
        public static void MaxAndMin(params double[] numbers)
        {
            if (numbers == null || numbers.Length == 0)
            {
                Console.WriteLine("数组为初始化");
            }
            double max = numbers[0];
           double min = numbers[0];
            for (int i = 1; i < numbers.Length; i++)
            {
                if (max < numbers)
                {
                    max = numbers;
                }
                if (min > numbers)
                {
                    min = numbers;
                }
            }
            Console.WriteLine("最大数为{0}", max);//输出最大值
            Console.WriteLine("最小数位{0}", min);//输出最小值
        }
    }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2