C#_各式各样的参数(引用参数、输出参数、数组参数、具名参数、可选参数)

引用参数

值参数和引用参数的区别在于传参时是否会创建参数副本:值参数不会创建副本,而引用参数会创建副本。

换言之,值类型参数的参数与实体之间无直接关联,修改参数不会对实体产生影响;引用类型参数的参数与实体可视为同一参数,修改参数会将修改同步至实体。

注:当函数并不修改参数引用,而只是修改被引用的对象时,值参数引用类型与引用参数引用类型在使用上并无区别,只是机制不同

使用方式:形参与实参用 ref 修饰

int num = 100;
public void Calculate(ref int x, int y)
{
    // 逻辑
}
Calculate(ref num, 50);

输出参数

输出参数与引用参数一样不创建副本。 (只是在函数中必需对输出参数执赋值操作,否则无法编译通过)

实参在传参时声明。

使用方式:形参与实参用 out 修饰

public void Calculate(out int x, int y)
{
    // 逻辑
    x = y;
}

Calculate(out int x, 10); // 声明输出参数 x
Console.WriteLine(x);     // 直接调用 x

数组参数

设置数组参数后,函数可接收动态数量的参数(数组参数必需位于参数列表的末尾;数组参数允许不传参)

使用方式:形参使用 params 修饰

public void Calculate(int x, int y, params int[] z)
{
    // 逻辑
}

Calculate(1, 10, 1, 2, 3); // 1 2 3会被整合进z数组

具名参数

通过具名参数传参,无需提前声明变量(具名参数依据参数名与形参匹配,而不是次序)

使用方式:参数 : 值(传参时)

public void Calculate(int x, int y)
{
    // 逻辑
}

Calculate(x: 1, y: 10);

可选参数

设置可选参数后,参数具有默认值,可选择不传参;若对参数传参,则覆盖默认值

public void Calculate(int x = 1, int y = 1)
{
    // 逻辑
}

Calculate(10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值