NamedandOptionalParameters,第1张

NamedandOptionalParameters,第2张

这个功能比较简单。说来话长,也只有这一点。在下面的演示中,我们经常使用重载函数来处理问题:
code
1 public void Process(int P1,float p2,string P3)
2 {
3//todo
4 }
5
6 public void Process(int P1,float p2)
7 {
8 Process(P1,p2,“fanweixiao”);
9 }
10
11 public void Process(int P1)
12 {
13 Process(P1,0f);
14 }
在C#4.0时代为我们提供了两个新的函数,命名参数和可选参数。它们是两个完全独立的概念,但却经常被结合在一起使用。重写后的函数是:
code
1 public int nb process(int P1 = 0,floatp2 = 0f,P3 = "范伟小")
2 {
3//todo
4 }
这样我们就可以用NBProcess(10)调用这个函数了,相当于NBProcess(10,0f,"范伟小")的调用。
如果要省略第二个参数,我们可以这样称呼:NBProcess(10,p3:“范伟笑”)。麻烦也可以写成NBProcess(p1:10,p3:“范伟笑”)。你甚至可以通过改变参数的顺序来调用它(P3:《萧》,:10)。
它也可以用于构造函数和索引器。
对于带有这种参数的重载,逻辑很简单:最近原则。(适用)
由于参数为5,所以首先排除M(string,int),因为它要求第一个参数的类型为string。M(int,string)可以,因为string是可选参数。它和M(int)都比M(object)好。object是“万恶之源”,比Object、5、int要善良得多。那么最后很明显M(int)是。
构造函数不同类型参数的位置和个数是区分它们的关键,而c#4.0的这个特性把参数的名字放到了规则里,所以以后给参数命名很重要:)。其实对于python这样的动态语言,上面的函数都是支持的,还有一个更酷的“*参数”:
code
1 defstepper(what,by = 1):
2 what+= by
3 return what
4
5 def average(first,* rest):
6 sum = first
7 for value in rest:sum+= value
8 result = 1.0 * sum/(len(rest)

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » NamedandOptionalParameters

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情