C#学习笔记 数组、具名、可选参数,扩展方法(this参数)

数组参数

  • 必须是形参列表中的最后一个,由params修饰
  • 举例:String.Format方法和String.Split方法
        static void Main(string[] args)
        {
            //int[] myIntArray = new int[] { 1, 2, 3 };
            //int result = CalculateSum(myIntArray);
            int result = CalculateSum(1,2,3);
            //可以使用params的形式输入一个数组,不需要提前声明数组,只要把数组的元素一个个列在这里
            //编译器发现这里的参数是params时,它会自动声明一个数组,把给出的值放进数组,再传进方法
            Console.WriteLine(result);
        }
        static int CalculateSum(params int[] intArray)
        //传入一个整型数组,求出整型数组的和,并返回出去
        //params关键字不影响原来方法的使用
        {
            int sum = 0;
            foreach (var item in intArray)
            {
                sum += item;
            }
            return sum;
        }
            string str = "Tim,Tom;Amy.Lisa";
            string[] result = str.Split(';',',','.');
            //Split接收一个字符串数组类型的参数,params char[] separator
            foreach (var name in result)
            {
                Console.WriteLine(name);
            }

具名参数

  • 当调用一个方法的时候,传进去的参数是带有名字的
  • 参数的位置不再受约束
  • 不是参数的某个种类,是参数的使用方法
        static void Main(string[] args)
        {
            PrintInfo("Tim", 24);
            //必须按照参数列表给出的数据类型来一一对应;不具名调用。
            PrintInfo(age: 24, name: "Tim");
            //具名参数:提高可读性;参数的位置不受限制
            //输出结果相同
        }
        static void PrintInfo(string name,int age)
        {
            Console.WriteLine("Hello {0},you are {1}",name,age);
        }

可选参数

  • 参数因为具有默认值而变得“可选”
  • 不推荐使用可选参数
        static void Main(string[] args)
        {
            PrintInfo(); 
        }
        static void PrintInfo(string name="Tim",int age=24)
        {
            Console.WriteLine("Hello {0},you are {1}",name,age);
        }

可选参数

扩展方法(this参数)

  • 方法必须是公有的、静态的,即被public static所修饰
  • 必须是形参列表中的第一个,由this修饰
  • 必须由一个静态类(一般类名为SomeTypeExtension)来统一收纳对SomeType类型的扩展方法
    class Program
    {
        static void Main(string[] args)
        {
            double x = 3.14159;
            double y = Math.Round(x, 4);
            //Math.Round()接收2个参数,第一个参数(double类型):要对哪个数值进行四舍五入;
            //第二个参数(int类型):要精确到小数点第几位。
            double z = x.Round(4);
            //x.就是Round()的第一个参数,这里只需要输入第二个参数
            Console.WriteLine(y);
            Console.WriteLine(z);
        }
    }
    static class DoubleExtension
    {
        public static double Round(this double input, int digits)
        {
            double result = Math.Round(input, digits);
            return result;
        }
    }

各种参数的使用场景总结

  • 传值参数:参数的默认传递方式
  • 输出参数:用于除返回值外还需要输出的场景
  • 引用参数:用于需要修改实际参数值的场景
  • 数组参数:用于简化方法的调用
  • 具名参数:提高可读性
  • 可选参数:参数拥有默认值
  • 扩展方法(this参数):为目标数据类型“追加”方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值