一、学习内容
构造C#方法的各种细节;
out、ref和params关键字;
.net 4引入的新特性:可选参数和命名参数。
二、方法的参数修饰符
1.无修饰符
一个方法的参数没有用参数修饰符标记,则它将按值传递,这意味着被调用的方法将得到它的一个副本。
这是最普通、常见的一种参数标记形式。
2.out修饰符
当用out修饰某个参数时,相当于该参数是这个方法的输出参数;
它是按照引用传递,而非按值传递;
被调用的方法必须为该参数赋值,否则在编译时就会报错;
调用一个有out参数的方法时,也必须使用out修饰符;
调用一个有out参数的方法时,可以不事先为该参数赋值,因为被调用方法会为它赋值;
它最重要的应用是:可以在一个方法中返回多个值。
3.ref修饰符
这是一种按引用传递值的方法‘;
如果你希望传递给被调用方法的参数会在方法中改变值,而不是一个副本的话,可以将该参数声明为ref;
此参数在方法调用前必须已经赋值,与out修饰符截然不同;
4.params修饰符
把可变数量的参数(这些参数应该是相同类型)作为单个逻辑参数传给方法,类似于数组;
被调用方法中应该把params修饰的参数当做一个数组来处理,同时支持0个输入参数;
一个方法最多只能支持一个params参数,且该参数必须是参数列表中的最后一个参数;
这项技术只是方便了调用者。
三、.net 4 新特性
1.可选参数
就是只某个参数在方法声明中已经指明了具有某个默认值;
可选参数的值必须在编译时就能确定,而不能在运行时确定,否则编译报错;
可选参数若放在非可选参数的前面也将导致编译报错。
2.命名参数
允许在调用方法时以任意顺序指定参数的值;
在调用的过程中,命名参数必须放在方法调用的最后;
可选参数往往和命名参数一起使用;
可选参数和命名参数的支持主要是为了简化与COM的互操作。
成员重载:
确保每个方法都有不同的参数组:个数不同,或类型不同;只是返回类型不同的成员不够唯一,不满足条件。