unity中 out ref params 的区别与使用环境

ref有进有出  将一个变量传入一个函数中进行"处理","处理"完成后,再将"处理"后的值带出函数。   out 只出不进 定义变量的值不变,不经过方法,传出变量的新值

ref:有进有出

ref 参数是双向的,既能带入初始值(有进),也能返回修改后的值(有出)。使用 ref 参数时,传递给方法的变量必须已经被初始化。

using UnityEngine;

public class RefExample : MonoBehaviour
{
    void Start()
    {
        int number = 5;
        Debug.Log("Before method call: " + number); // 输出: Before method call: 5
        ModifyNumber(ref number);
        Debug.Log("After method call: " + number); // 输出: After method call: 10
    }

    void ModifyNumber(ref int num)
    {
        num *= 2; // 修改传入的参数
    }
}
在这个例子中,number 的初始值是 5(有进),在方法 ModifyNumber 中被修改为 10(有出)。

out:只出不进

out 参数是单向的,只能用于返回数据(只出)。使用 out 参数时,传递给方法的变量不需要初始化,因为方法内部必须为 out 参数赋值。

using UnityEngine;

public class OutExample : MonoBehaviour
{
    void Start()
    {
        int result;
        Debug.Log("Before method call: result is uninitialized");
        CalculateSquare(5, out result);
        Debug.Log("After method call: " + result); // 输出: After method call: 25
    }

    void CalculateSquare(int number, out int square)
    {
        square = number * number; // 方法内部必须赋值
    }
}

在这个例子中,result 在方法调用前没有初始化(不进),在方法 CalculateSquare 内部被赋值为 25 后返回(只出)。

总结

  • ref 是双向的,有进有出:参数在进入方法时携带初始值,方法可以修改参数的值并返回给调用者。
  • out 是单向的,只出不进:参数在进入方法时不需要携带初始值,方法必须为参数赋值并返回给调用者。

这两种参数修饰符适用于不同的场景:当你需要一个方法修改传入的参数值时,使用 ref;当你需要一个方法返回多个值时,使用 out

params 参数

params 参数用于传递可变数量的参数。它允许你传递一个参数数组,或者不定数量的参数。params 参数必须是方法的最后一个参数。

using UnityEngine;

public class ParamsExample : MonoBehaviour
{
    void Start()
    {
        PrintNumbers(1, 2, 3, 4, 5); // 输出: 1 2 3 4 5
        PrintNumbers(10, 20); // 输出: 10 20
    }

    void PrintNumbers(params int[] numbers)
    {
        foreach (int number in numbers)
        {
            Debug.Log(number + " ");
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值