参数

来源:互联网 发布:淘宝店名大全要吉利 编辑:程序博客网 时间:2024/04/28 21:08

可选参数(也可以称作默认参数),当你在定义参数的时候声明来默认值,这样在使用该函数的时候,如果没有给其实参,它会默认使用它的默认参数:
`  class Program
{
static void Main(string[] args)
{
var troy = new Troy();
troy.HelloWorld(1);//此时b和c都为0
troy.HelloWorld(1,2);//此时b为2,c为0,以上两个为可选参数的玩法

        troy.HelloWorld(a: 1, b: 2);//命名参数玩法        troy.HelloWorld(b: 2, a: 1);//即使顺序打乱,效果也是一样    }}public class Troy {    public void HelloWorld(int a, int b = 0,int c=default(int)) {//这里b和c参数就是可选参数        //注意default(int)这种玩法,表示int的默认值。        //我是第一次知道这种用法,然而非常推崇这样的玩法,因为可以有效减少你代码中的魔法数字。也许你认为0这种不算魔法数字,然而我认为能让代码更简单易懂一点点也是非常有必要的。        //就算不用魔法数字,那么default(DateTime)去判断DateTime值是否为默认值,是不是比new Datetime()更好一点呢?    }}

复制代码`
如果调用函数的时候,没有给其形参,C#编译器会自动嵌入参数的默认值。
规则:

  • 有默认值的参数一定要在没有默认值的参数之后写,有一个例外,“参数数组必须在最后”
  • 默认值必须是编译时能够确定的常量值,同样可以使用default关键字和new关键字,例如DateTime dt = default(DateTime),Guid guid = new Guid()

ref 和out

如果参数用ref或out关键字进行来标识,就不能设置默认值。因为没有办法为这些参数传递有意义的默认值
区别:

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

out

方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。

若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。

属性不是变量,不能作为 out 参数传递。

ref是 有进有出,而out是 只出不进。

0 0
原创粉丝点击