C#开发——ref和out

ref和out


ref和out是C#中的两个关键字,用于参数传递。

ref

ref关键字用于传递引用类型的参数。它可以将一个变量传递给方法,并使方法能够修改该变量的值。使用ref关键字时,方法中的参数必须先被初始化,否则编译器会报错。

注意:使用ref,首先需要使用”不是常量“的变量,其次是必须使用初始化过的变量。
C#不允许ref参数在调用他的函数中初始化

例如:

public void Method(ref int num)
{
    num = num + 10;
}

int number = 5;
Method(ref number);
Console.WriteLine(number); // 输出 15
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void MaxValue(int[] intArray,ref int maxIndex)
        {
            int maxVal = intArray[0];
            maxIndex = 0;
            for(int i = 1; i < intArray.Length; i++)
            {
                if (intArray[i] > maxVal)
                {
                    maxVal = intArray[i];
                    maxIndex = i;

                }
            }
        }
        static void Main(string[] args)
        {
            int maxIndex = 1;
            int[] intArray = { 1, 7, 2, 4, 9 };
            MaxValue(intArray, ref maxIndex);
            Console.WriteLine($"maxIndex={maxIndex}");
        }
    }
}


out

out关键字也用于传递参数,但与ref不同的是,它可以用于传递值类型的参数。out关键字表示该参数是“输出参数”,即方法中必须给该参数赋值,否则编译器会报错。与ref不同的是,out关键字不要求参数在传递前被初始化。

它也类似于 in 关键字,只不过 in 不允许通过调用方法来修改参数值。 若要使用 out 参数,方法定义和调用方法均必须显式使用 out 关键字。

使用out关键字指定参数为输出参数,在函数执行完毕后,该参数的值将返回给函数调用中使用的变量,out参数额外返回参数
注意:out参数可以使用未赋值的变量,使用时也将它看作未赋值,可以把已经赋值的变量用作out参数,但是存储的值会丢失
结束当前函数时必须对out参数赋值

例如:

public void Method(out int num)
{
    num = 10;
}

int number;
Method(out number);
Console.WriteLine(number); // 输出 10
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void MaxValue(int[] intArray,out int maxIndex)
        {
            int maxVal = intArray[0];
            maxIndex = 0;
            for(int i = 1; i < intArray.Length; i++)
            {
                if (intArray[i] > maxVal)
                {
                    maxVal = intArray[i];
                    maxIndex = i;

                }
            }
        }
        static void Main(string[] args)
        {
            int maxIndex;
            int[] intArray = { 1, 7, 2, 4, 9 };
            MaxValue(intArray, out maxIndex);
            Console.WriteLine($"maxIndex={maxIndex}");
        }
    }
}


总的来说,ref和out都用于参数传递,但ref用于传递引用类型的参数,而out用于传递值类型的参数。在使用时,需要注意参数的初始化和赋值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤影墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值