欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

C#中命名参数和可选参数

时间:2022-06-09 09:19:44|栏目:.NET代码|点击:

一、简介

设计方法的参数是,可以将部分参数和全部参数分配默认值,然后调用这些方法的时候可以选择不提供部分实参,使用参数定义的默认值,另外,还可以在调用方法的时候通过指定参数名称来传递实参。

二、代码案例

    class Program
    {
        private static int s = 0;
        private static int s_n = 0;

        private static void Mothed(int x = 9, string s = "A", DateTime dt = default(DateTime), Guid guid = new Guid())
        {
            Console.WriteLine("x={0},s={1},dt={2},guid={3}", x, s, dt, guid);
        }
        static void Main(string[] args)
        {

            Mothed();//等同于Mothed(9,"A",default(Datetime),new Guid())
            Mothed(8, "X");//等同于Mothed(8,"X",default(Datetime),new Guid())
            Mothed(5, guid: Guid.NewGuid(), dt: DateTime.Now);//等同于Mothed(5,"A",DateTime.Now,Guid.NewGuid())
            Mothed(s_n++, s_n++.ToString());//等同于Mothed(0,"1",default(Datetime),new Guid());
            Mothed(s: (s_n++).ToString(), x: s_n++);//等同于一下两行代码,注意此处的参数顺序无关,和形参的名称对应
            //string t1="2";
            //int32 t2=3;  
            //Mothed(t2,t1,default(Datetime),new Guid())
        }
    }

向方法传递实参时,编译器从左到右的顺序对实参进行求值。在对Mothed的第四个调用中s_n的当前默认值是0,先递增然后等于1转为string传递给s,然后继续递增到2(s_n++先使用后递增)传给x。

三、总结

1.实参可按照任意顺序传递,但命名实参必须且只能出现在实参列表尾部,如上述代码第三种调用方式。
2.可以按照名称将实参传递给没有默认值的参数。但所有必须的实参都必须传递(无论按照位置还是按照名称),编译器才能编译代码。
3.C#不允许省略逗号之间的实参,比如M(1,,DateTime.New).因为这样会造成可读性的影响,程序员将被迫去读 逗号,对于没有默认值的参数,如果想省略它们的实参,以传参数名的方式传递实参即可。

上一篇:unity实现简单计算器

栏    目:.NET代码

下一篇:大型门户网站实现的十四大技术小结

本文标题:C#中命名参数和可选参数

本文地址:http://www.codeinn.net/misctech/204198.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有