需要知道:类和要领的关系
要领和参数修饰符
自界说要领可以有或没有参数,也可以有或没有返回值。可以被各类关键字(static、virtual、public、new等)修饰以限制其行为。
C#参数修饰符
无 如果一个参数没有用参数修饰符符号,则认为它将按值通报,这意味着被挪用的要领收到原始数据的一份副本。
out 输出参数由被挪用的要领赋值,因此它按引用通报。如果被挪用的要领没有给输出参数赋值,就会呈现编译器错误。
ref 挪用者赋初值,并且可以由被挪用的要领可以选地从头赋值。如果被挪用的要领未能给ref参数赋值,也不会编译器错误。
params 这个参数修饰符允许将一组可变数量的参数作为单独的逻辑参数进行通报。要领只能有一个params修饰符,而且必需是要领的最后一个参数。
默认的参数通报行为
引用类型:
不管这里通报的是值类型还是引用类型,通报之前和之后的值是不会变的。Add()要领里面操纵的是数据的副本,不会影响到数据自己。就像在要领里面申明了一个参数来接受通报的参数,在要领里面操纵的是新申明的参数如不是我们通报进去的参数。
Out修饰符
out修饰符叫做输出参数。界说为带有输出参数(通过关键字out)的要领有义务在退出这个要领之前,给参数赋一个得当的值。挪用一个带有输出参数的要领也需要使用out修饰符。
法则:
①声明一个变量不赋值(赋值编译不会错)
②把此变量以Out形式传到要领里面
③挪用要领后此变量就有值
ref修饰符
如果但愿要领可以对在挪用者感化域中声明的差别数据进行操纵(凡是转变它的值),例如:排序和交换例程,就需要使用引用参数。
输出参数不需要在它们被通报给要领之前初始化,因为要领在退出之前必修为输出参数赋值。
引用参数必需在它们被通报给要领之前初始化,因为是在通报一个对已存在变量的引用。
ref例子:
法则:
①声明一个变量(初始化)
②把参数以ref形式通报
③要领里做操纵
Params修饰符
C#使用params关键字撑持参数数组的使用。params关键字可以把可变数量的参数(不异类型) 作为单个逻辑参数传给要领。
注: 为了制止歧义(多重界说),C#要求要领只撑持一个params参数,而且必需是参数列表中的最后一个参数。
界说可选参数
可选参数就是声明参数的时候已经赋值了,不异与有个初始值,挪用者可以按照需求需不需要转变这个值。
注:可选参数的值是确定的而不是由编译的时候孕育产生的。可选参数必需放在要领签名的最后。
使用定名参数挪用要领
定名参数允许你在挪用要领时以任何挨次指定参数的值。因此,,你可以使用冒号操纵符通过名称来指定 参数。
定名参数共同可选参数使用对照有效果。
要领重载
界说了一组名字不异的要领时,它们的参数数量(或类型)差别,这样的要领就叫做被重载。
例如:计算两个数的和,这就不异于一个重载