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後的結果,若有錯誤之處,敬請幫忙修正。

相關文章
相關標籤/搜索