【Unity3D】C#基础 ---关键字ref和out的区别与联系

本文详细对比了C#中Ref与Out两种参数传递方式的异同。Ref要求变量在传递前必须初始化,而Out则允许未初始化的变量传递,并强调了在函数内部必须为Out变量赋值。此外还讨论了这两种传递方式在函数内的使用特性。

1共同点

共同点:都是传递变量地址给方法。

如下测试程序:

using System;

namespace ConsoleApp9
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 1;
            int y = 2;
            Console.WriteLine("x = {0}", x);
            Console.WriteLine("y = {0}", y);
            Program temple = new Program();
            temple.testMyMethod(ref x, out y);
            Console.WriteLine("x = {0}", x);
            Console.WriteLine("y = {0}", y);
        }
        public void testMyMethod(ref int x, out int y)
        {
            x = 10;
            y = 20;
        }
    }
}

在这里插入图片描述

2.不同点

2.1传递的变量是否先进行初始化

  • ref型传递变量前,该变量必须进行初始化。
  • out型传递变量前,该变量可以不用进行初始化。

如下:
在主函数中如此调用testMyMethod(ref i),不可以。
在主函数中如此调用testMyMethod(out i),可以。

在这里插入图片描述

2.2 是否可以在函数内部使用

出错
在这里插入图片描述
没有出错
在这里插入图片描述
没有出错
在这里插入图片描述

ref传进去的参数在函数内部可以直接使用,而out不可,因为out会清空变量,所以在使用out型变量时要赋值后才能使用。

2.3 函数内部的变量是否需要修改

ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。

在这里插入图片描述

作者:Beyong    
出处:Beyong博客
github地址:https://github.com/beyong2019

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值