【Unity3D】C#基础 ---关键字ref和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必须在离开函数体前进行赋值。

经验分享 程序员 微信小程序 职场和发展