C#中可选参数和具名参数的使用

Posted hubbert123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中可选参数和具名参数的使用相关的知识,希望对你有一定的参考价值。

具名参数 和 可选参数 是 C# 4.0 提出来的新特性

一,可选参数分为:部分可选、全部可选

1,声明

    public class Dogs
    {
        public string Name { get; set; }
        public string Age { get; set; }

        //1,name为必选参数,age为可选参数,如果有必选参数,那么可选参数必须定义在必选参数后
        //可选参数之后必然为可选参数
        //如果都是可选参数,那么可以放第一位
        public void Says(string name, int age = 22)
        {
            Console.WriteLine(name + "," + age);
        }

        //2,name和age都为可选参数
        public void Eat(string food= "骨头", int bowls = 4)
        {
            Console.WriteLine(food + "," + bowls);
        }
    }

2,调用

        static void Main(string[] args)
        {
            Dogs dog = new Dogs();
            dog.Says("小白");  //name传入实参,age使用默认值
            dog.Says("小白",1);  //name和age都穿入实参

            dog.Eat();  //不穿入实参,food和bowls都使用默认值
            dog.Eat("");//food传入实参,bowls使用默认值
            dog.Eat("",2);//food和bowls都使传入实参       

        //dog.Eat(2); //这样调用会报错,因为默认传入的为第一个参数,而第一个参数类型为String类型
       //想要传入第一个参数使用默认值,而第二个参数使用传入值就要使用具名参数


            //具名参数使用:food使用默认值,而bowls使用传入参数
            //使用具名参数的时候,参数的顺序可以和参数声明时候的顺序不一致
            dog.Eat(bowls: 3);  //food使用默认值,而bowls使用传入值
            dog.Eat(bowls: 2, food: "狗粮");

            Console.ReadLine();


        }

 

以上是关于C#中可选参数和具名参数的使用的主要内容,如果未能解决你的问题,请参考以下文章

C#入门详解

《C#零基础入门之百识百例》(三十四)方法参数 -- 可选参数和形参数组 -- N数的最大公约数

C# 4 中的重载分辨率和可选参数

spring的jdbc具名参数

覆盖方法上的 C# 可选参数

C#终于支持可选参数了!