参数

可选参数(也可以称作默认参数),当你在定义参数的时候声明来默认值,这样在使用该函数的时候,如果没有给其实参,它会默认使用它的默认参数:
`  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是 只出不进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值