可能是篇幅太短了,又被打入冷宫了.先重发一篇加上可选参数.本来不想加这个呢,因为可选参数可能大家用的会多点.其实这
两个在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赋值.在使用可选参数的过程中,由于命名参数的出现,更提供了许多方便.