• C# 点点滴滴: out和ref


      用c#很长一段时间了,不过基本是啥都不会,当C用的,作为写单片机的,还是真心觉得C比较亲切,呵呵。

      不过总是要进步啊,慢慢积累呗,这次是写一个CAN的上位机模板出来,以后的项目就要彻底告别串口上位机了。

      先说说这个out和ref,就是C语言里面的指针型函数参数。

    // C语言中,传址传递
    void Test_Function( int * temp )
    {
         *temp = 100;    
    }

      今天这样用到C#上,果然悲剧,必须使用ref或out才可以。

      先百度一下区别先:

    ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。

    使用ref前必须对变量赋值,out不用。

    out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。 

      C# 例程:

    // C#
    // out
    void Test_Function_1( out int temp )
    {
          // 这里temp已经被清空了,即不能这里直接用temp给别的变量赋值
          // 离开函数前temp必须赋值
          temp = 100;
    }
    
    // 调用
    // 可以不需要初始化
    int temp_1;
    Test_Funton_1(out temp_1);
    // C#
    // ref
    void Test_Function_2( ref int temp )
    {
          // 这里temp已经在调用之前被初始化过了
          // 离开函数前temp可以不修改,也可以修改
          temp = 100;
    }
    
    // 调用
    // 必须初始化
    int temp_2 = 0;
    Test_Funton_2(ref temp_2);

    ------------------------------------------------------------------------------------------

    作者:庞辉

    出处:http://www.cnblogs.com/pang123hui/

    本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).

  • 相关阅读:
    UOJ 【UR #5】怎样跑得更快
    【TJOJIHEOI2016】求和
    CF 932E Team Work
    【BZOJ2159】Crash的文明世界
    Luogu P4707 重返现世
    Luogu P3175 [HAOI2015]按位或
    【BZOJ3930】选数
    nginx 学习
    如何解决 react-create-app 里面的 no-unused-vars ?
    随时更新web html 项目页面,查看手机等其他移动设备的几种方法?
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2845595.html
Copyright © 2020-2023  润新知