c#关于ref与out,params传参

本文详细介绍了C#中参数传递的几种方式,包括params、ref和out关键字的使用方法及适用场景,帮助读者理解如何有效地在方法间传递数据。

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

1、params

首先,参数必须是一维数组;

在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字

使用后params可以直接使用一组对象作为参数如代码中调用方法2

//定义
public void TestParams(params object[] list)
{
    foreach (object o in list)
   {
      if (o is Bclass)
            Console.WriteLine(o + " is Bclass!");
      else
            Console.WriteLine(o + " is not Bclass");
    }
}
//调用
string str1="test";
object[] po = new object[] { 100, "guid", str1 };
TestParams(po);//调用方法1
TestParams(100,"str",str,b1);//调用方法2


2、ref,out

通常我们向方法中传递的是值.方法获得的只是这些值的一个副本,然后使用这些副本

当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.

而使用ref或out后,可以使参数按照引用来传递;方法体里对传递参数做了改变,调用完方法后,原先参数也做了改变

static void TestRefAndOut()
        {
            string s1 = "Hello World!";
            TestRef(ref s1);
            Console.WriteLine(s1);//output: Method TestRef: Hello World!
            TestOut(out s1);
            Console.WriteLine(s1);//output: Method TestOut: Hello World!
        }

        static void TestOut(out string str)
        {
            str = "Method TestOut: Hello World!";
        } 

        static void TestRef(ref string str)
        {
            str = "Method TestRef: Hello World!";
        }

相同之处:
1、方法定义和调用方法时,都必须显式使用ref或out关键字

区别:

1、使用ref,参数必须在调用方法前初始化值;out不用;

2、使用out,必须在方法内部对参数赋值;ref不用;

适合使用情景:

1、out适合用在需要retrun多个返回值的地方;(一个方法只能有一个return值,而使用out传参可以达到多个返回值)

2、ref则用在需要被调用的方法修改调用者的引用的时候

 

 

 

转载于:https://www.cnblogs.com/loklook123/p/3208539.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值