zoukankan      html  css  js  c++  java
  • C#新功能--命名参数与可选参数

      可能是篇幅太短了,又被打入冷宫了.先重发一篇加上可选参数.本来不想加这个呢,因为可选参数可能大家用的会多点.其实这

    两个在VB中早就有了,C#中,在.net4发布之前是不能使用的.看到这个比较兴奋,我想大家也有好多人不知道,所以就强烈的想与大家

    分享一下.

    一、命名参数  

       命名参数会潜在的改变编写代码的方式.这个新功能能使代码更容易阅读和理解.

    例如,看一下System.IO名称空间中的File.Copy()方法,它一般构建为

    File.Copy(@"C:mytestFile.txt",@"C:myOtherFile.txt",true);

          在这行代码中,这个简单的方法使用3个参数,但实际传递给Copy()方法的是什么内容?除非

    知道这个方法的前前后后,否则 仅看一眼该方法,很难判断出该方法会执行何种操作.而通过命名

    参数,就可以在提供参数值之前使用代码中的参数名,如下所示:

    File.Copy(sourceFileName: @"C:mytestFile.txt",
                    destFileName:  @"C:myOtherFile.txt",
                    overwrite:true);

        现在通过命名参数,就很容易阅读和理解这行代码将执行的操作.使用命名参数对最终的编译

    没有影响,命名参数仅用在应用程序的编码中.

    二、可选参数

      可选参数允许为方法的一些参数提供默认值,并允许使用者重载类型,因此,即使只有一个方法,也能处理所有变体

    public void test(string a, string b, int c, bool d=true,bool e=false)
            {
            }

      调用:

    public void invoke()
            {
                test("li", "dd",7);
                test("li", "dd", 7,false);
                test("li", "dd", 7, true,false);
            }

      这里也可以用到上述的命名参数:

       test("li", "dd", 7, e:true);

      这样d参数依然可以使用默认值,如果没有命名参数,想给e赋值,必须还要给d赋值.在使用可选参数的过程中,由于命名参数的出现,更提供了许多方便.

  • 相关阅读:
    Java精通并发-Lock锁方法原理详解
    Java精通并发-Lock锁机制深入详解
    深层次揭示runBlocking与coroutineScope之间的异同点
    轻量级协程与线程执行比对分析
    第二阶段冲刺个人任务——four
    第二阶段冲刺个人任务——three
    第二阶段冲刺个人任务——two
    第二阶段冲刺个人任务——one
    输入法评价
    2017.12.30第十五周学习进度
  • 原文地址:https://www.cnblogs.com/smiler/p/3170056.html
Copyright © 2011-2022 走看看