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

server/2024/11/14 1:26:35/

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 + " ");
        }
    }
}
 


http://www.ppmy.cn/server/96300.html

相关文章

Xlua原理分析 四

前面已经介绍了Xlua的通信原理,这篇主要记录Xlua如何做到Hotfix的。 我们项目就用到Xlua的Hotfix特性,周更用Lua去修改代码。版本内用C#开发。这点我觉得是Xlua比toLua强大的重要特性之一。 如何使用Hotfix本篇不介绍了,看Xlua教程懂得都懂…

Oracle-OracleConnector

提示:OracleConnector 类是 Debezium 中用于与 Oracle 数据库交互的一个连接器组件 文章目录 前言一、核心功能二、代码分析总结 前言 提示:OracleConnector 类负责配置、启动、管理和验证与 Oracle 数据库的连接,并为后续的数据捕获任务准备…

Python中的`enumerate`函数详解及其在循环中的应用

Python中的enumerate函数详解及其在循环中的应用 在Python编程中,enumerate是一个非常有用的内置函数,它在处理循环时尤其重要。本文将详细介绍enumerate的功能、用法以及如何在实际编程中应用它,以提高代码的可读性和效率。 什么是enumera…

Barotrauma潜渊症怎么用服务器开服联机呢

1、购买后登录服务器(百度莱卡云) 购买服务器后,如下图👇,面板信息都在产品详情页面内 注意:请不要用你的莱卡云账号信息去登陆服务器面板 进入控制面板后会出现正在安装的界面,安装时长约5分…

Linux学习笔记:iptables命令管理

1、iptables简介 其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。 语法格式:iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION -t&#…

使用Go语言绘制柱状图教程

使用Go语言绘制柱状图教程 本文将介绍如何使用Go语言及gg包绘制柱状图,并将图表保存为PNG格式的图片。gg包是一个功能强大的2D图形库,适合用于绘制各种图表。 安装gg包 首先,确保你已经安装了gg包。如果还没有安装,可以使用以下…

算法通关:014_1:用栈实现队列

文章目录 题目总结代码运行结果 题目 用栈实现队列 leetcode :232 总结 时间复杂度 平均下来每个方式是O(1) 代码 class MyQueue {public Stack<Integer> in;public Stack<Integer> out;//初始化public MyQueue() {in new Stack<>();out new Stack<…

【Linux 从基础到进阶】Linux 内核参数调优

Linux 内核参数调优 引言 内核参数调优是提升 Linux 系统性能和稳定性的重要手段。通过合理配置和优化内核参数,可以显著改善系统资源利用率和响应速度。本文将介绍内核参数的调优方法,并提供适用于 CentOS 和 Ubuntu 系统的具体示例。 1. 内核参数简介 内核参数是控制 L…