C# out 和 ref 用法

本文详细探讨了C#中ref和out关键字的区别和使用规则。ref修饰的变量在函数调用时必须赋值,而out变量在调用时不需要赋值。在函数定义时,ref变量可以赋值、初始化为空或不做处理,但out变量必须赋值或初始化为空。总结了ref和out在参数传递时的注意事项,帮助读者深入理解这两种修饰符的用法。
摘要由CSDN通过智能技术生成

// 函数定义   

    public int Test(int i, ref string str1, out string str2)                 

        {
            if (1 == i)
            {
                str1 = "liao";

              //str1 = null;


                str2 = "huihui";

              //str2 = null;
                return 0;
            }

            else
            { 

                                                     // 这里对 ref 修饰的 str1 的操作可以不做任何处理,则在函数调用时取值
                str2 = "hello world";
                return 1;
            }

        }

// 函数调用

      main()

    {

       int i = Convert.ToInt32(textBox1.Text.ToString());
          //ref 需要初始化  

          //string str1;                            // 错误,编译通不过

          //string stri = null;    

            string str1 = "liaohuihui"; 

               

        //out 不需要初始化

        //string str2;                             // 这里对 out 修饰的 str2 的操作可以仅仅只做声名

        //string str2 = null;
          string str2 = "liaohuihui";

        

            int j =  ConnectMySql.Test(i, ref str1, out str2);     
            MessageBox.Show(str1);
            MessageBox.Show(str2);
            MessageBox.Show(Convert.ToString(j));

    }

         以 ref 修饰的变量在定义的时候要求不严格, 三种情况都是可以的:1. 赋值;2. 初始化为空;3. 不做任何处理

                               但在调用的时候较为严格,必须赋值(空值也可)。要说明的是:只要他在定义的时候被赋值过(包括空值),调用函数时都取定义时所赋的值,但是如果在定义时不做任何处理,则取调用时所赋的值。

         以 out 修饰的变量在定义的时候要求较为严格  仅两种情况:1. 赋值;2. 初始化为空

                                但在调用的时候要求相对宽松,不需要任何赋值或初始化为空操作,输出的结果也就只能取在定义的时候所赋的值。

       

         既然是以参数作为返回值一般都在定义时赋值,以上辨析为了彻底弄清二者的区别。

         以上是 Test 后的结果,如有错误之处,敬请帮忙修正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值