zoukankan      html  css  js  c++  java
  • 可选参数与命名参数

    可选参数与命名参数

    一、简介

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

    二、代码案例

      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).因为这样会造成可读性的影响,程序员将被迫去读 逗号,对于没有默认值的参数,如果想省略它们的实参,以传参数名的方式传递实参即可。


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    因安装包依赖问题导致无法安装的解决办法!
    Ubuntu18.04安装qemu遇到问题-qemu : Depends: qemu-system (>= 1:2.11+dfsg-1ubuntu7)
    理解mount -t proc proc /proc
    printf "%.*s"
    Linux 内核内存分配函数devm_kmalloc()和devm_kzalloc()
    为什么 extern 使用 const 修饰的变量会编译不过?
    php openssl_sign 对应 C#版 RSA签名
    win7中用iis部署ssl服务
    找出windows系统上最大的文件
    windows 创建指定大小文件
  • 原文地址:https://www.cnblogs.com/wml-it/p/14841582.html
Copyright © 2011-2022 走看看