代码改变世界

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

2011-07-04 20:30  小郝(Kaibo Hao)  阅读(494)  评论(0编辑  收藏  举报

先看个例子,创建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. . .");

 

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