c#中参数关键字params、ref、out

本文详细介绍了C#中参数传递的三种方式:params、ref 和 out。params用于可变数量的参数列表,ref和out则用于按引用传递参数,但它们在使用上有细微差别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

params:指定在参数数目可变处采用参数的方法参数;它后面不允许任何其它参数,并且只允许有一个params参数。

ContractedBlock.gifExpandedBlockStart.gifparams
// cs_params.cs
using System;
public class MyClass
{

public static void UseParams(params int[] list)
{
for (int i = 0 ; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine();
}

public static void UseParams2(params object[] list)
{
for (int i = 0 ; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine();
}

static void Main()
{
UseParams(
1, 2, 3);
UseParams2(
1, 'a', "test");

// An array of objects can also be passed, as long as
// the array type matches the method being called.
int[] myarray = new int[3] {10,11,12};
UseParams(myarray);
}
}

ref使参数按引用传递;其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中;传递到 ref 参数的参数必须最先初始化,这与 out 不同,out 的参数在传递之前不需要显式初始化。

ContractedBlock.gifExpandedBlockStart.gifref
class RefExample
{
static void Method(ref int i)
{
i
= 44;
}
static void Main()
{
int val = 0;
Method(
ref val);
// val is now 44
}
}

out使参数按引用传递;其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中;传递到out参数的参数需要调用方法以便在方法返回之前赋值,这与ref不同,ref的参数在传递之前需要显式初始化。

ContractedBlock.gifExpandedBlockStart.gifout
class OutExample
{
static void Method(out int i)
{
i
= 44;
}
static void Main()
{
int value;
Method(
out value);
// value is now 44
}
}

转载于:https://www.cnblogs.com/zengen/archive/2011/03/29/1998457.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值