C# out和ref用法

//函数定义   函数

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

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

              //str1 = null;编译


                str2 = "huihui";变量

              //str2 = null;
                return 0;
            }错误

            else
            { return

                                                     //这里对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后的结果,若有错误之处,敬请帮忙修正。

相关文章
相关标签/搜索