• Effective C# 学习笔记(十) 用可选参数尽量减少方法重载


    先看个例子,创建word文档,并在其中写一行话

    var wasted = Type.Missing;

    var wordApp = new

    Microsoft.Office.Interop.Word.Application();

    wordApp.Visible = true;

    Documents docs = wordApp.Documents;

    //这个方法传了四个参数,但都不是开发人员想传的,能不能在需要时再传有用的参数,而不必每次都补空值呢?

    Document doc = docs.Add(ref wasted,

    ref wasted, ref wasted, ref wasted);

    Range range = doc.Range(0, 0);

    range.InsertAfter("Testing, testing, testing. . .");

     

    下面这个代码就展现了可选参数的作用

     

    var wordApp = new

    Microsoft.Office.Interop.Word.Application();

    wordApp.Visible = true;

    Documents docs = wordApp.Documents;

    //简介很多吧? :)

    Document doc = docs.Add();

    Range range = doc.Range(0, 0);

    range.InsertAfter("Testing, testing, testing. . .");

     

    要想独立地定义些参数,而不想给其他参数都付空值可以利用C#的命名参数的新特性

    var wordApp = new

    Microsoft.Office.Interop.Word.Application();

    wordApp.Visible = true;

    Documents docs = wordApp.Documents;

    object docType = WdNewDocumentType.wdNewWebPage;

    //使用了命名参数 DocumentType,这样的可读性也很好,你知道 docType参数到底是传给谁了

    Document doc = docs.Add(DocumentType : ref docType);

    Range range = doc.Range(0, 0);

    range.InsertAfter("Testing, testing, testing. . .");

     

    注意:使用命名参数的会存在一个风险,那就是当改变了某个方法的参数名称时,需重新使用该方法的参数名称,重新编译程序

  • 相关阅读:
    题解 [APIO2014]连珠线
    题解 [ZJOI2019]语言
    题解 Hero meet devil
    题解 [BJOI2019]奥术神杖
    题解「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set
    题解 Sue的小球/名次排序问题/方块消除/奥运物流
    题解 「一本通 5.4 练习 1」涂抹果酱
    Mybatis的类型转换
    面试题:微服务熔断降级限流
    面试题:微服务网关
  • 原文地址:https://www.cnblogs.com/haokaibo/p/2097713.html
Copyright © 2020-2023  润新知