Unity ref 和out、 params的使用

相信很多刚接触C#或者unity的同学,都会看到很多这样那样的函数,带有ref ,out 或者params的参数,今天我就来讲一讲这三者的使用和区别:

ref

直接来看看实现的代码

  public void UpdateScore(ref int  score)
    {
        score = UnityEngine.Random.Range(80, 100);
    }

我使用unity在start里面调用测试

   void Start()
    {
        int myscore = 60;
        UpdateScore(ref myscore);
        print(myscore);



    }

看看打印结果:

有C语言或者C++基础的同学可能看出来了,这不就像C语言的指针变量吗?是的,这跟指针变量差不多,其实这是C#的参数引用传递,在方法中对参数所做的任何更改都将反映在该变量中

什么时候使用ref关键字呢

我理解:有时候我们不需要执行完这个方法就可以改变参数的值,或者想要改变的参数值比较多的时候

out

看看代码实现:

 public void GetScore(out int score)
    {
        score = UnityEngine.Random.Range(80, 100);
    }

调用

    void Start()
    {
        int score;
        GetScore(out score);
        print(score);



    }

结果:

其实out跟ref编译原理是一样的,区别就是ref需要先初始化值,而out不需要,总结起来就是ref 有进有出,out只出不进

out什么时候使用呢

我理解:用在没有返回值的函数就能返回值,例如在返回值是void的函数就能返回,还有就是我们经常使用的都是返回一个值的,那么我们如果想在一个函数中返回多个值呢?那么out就起作用了,我们可以使用out返回多个值

 

params

看看代码实现

   public void Getdd(params int[] pp)
    {
        foreach (var p in pp)
        {
            print(p);
        }
    }

调用

   void Start()
    {
       Getdd(1,2,3);



    }

结果:

是不是感觉有些不同,我们以往传递数组的时候,是不是不是这样传递的,params是为动态数组而准备的,我们直接输入数组的元素就行了,如果不加params,我们只能这样调用

    public void Getdd( int[] pp)
    {
        foreach (var p in pp)
        {
            print(p);
        }
    }

 void Start()
    {
       Getdd(new []{1,2,3});
    }

希望大家好好理解一下,也可以多看看unity系统函数,加深理解,这一篇完毕,如果对大家有用,关注或者点赞我

 

 

  • 32
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值