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

    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赋值.在使用可选参数的过程中,由于命名参数的出现,更提供了许多方便.

     
     
    分类: C#
  • 相关阅读:
    Mybatis动态数据源
    [Java基础]判断字符串指定字符类型
    [Java基础]让Map value自增
    (转载)UTF-8占几个字符
    JVM程序计数器
    Mybatis异常总结
    通过类对象来获取类中的属性,方法,构造器
    主动引用和被动引用
    ClassLoader类加载器浅见
    反射----获取class对象的五种方法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3170484.html
Copyright © 2011-2022 走看看