天天看點

【C#】——out和ref差別

   看視訊的時候發現關于out和ref之間感覺有點兒亂,兩者都是用來傳值的,使用後可以改變原來參數的值,但是傳值的過程感覺不是很明白,現在整理一下:

  代碼①: 

static void Main(string[] args)
        {
            int number1 ;//可以不指派
            int number2 = 90;
            int sum = AddNumber (out number1,  number2);

            Console.WriteLine(number1 );
            Console.WriteLine(number2);

            Console.WriteLine(sum);
            Console.ReadKey();
        }
        public static int AddNumber(out int num1, int num2)
        {
            num1 = 100;//必須指派
            num2 = 200;
            return num1 +num2 ;
        }
    }
}
           

   運作結果:

【C#】——out和ref差別

  代碼②:

static void Main(string[] args)
        {
            int number1 = 10;
            int number2 = 20;

            int sum = show(ref number1 ,ref number2 );
            Console.WriteLine("{0},{1},{2}", number1, number2, sum);

            Console.ReadKey();
            
        }

        public static int show(ref int num1, ref int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
        }
    }
}
           

  運作結果:

【C#】——out和ref差別

【總結】

   方法的參數用out修飾了,那麼這個參數必須在方法裡進行指派,在方法外面可以不給這個參數指派;

   如果使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字;

   通過對比可以發現ref用的時候必須要給這個變量賦初值,這是和out的差別,out可以把方法裡的值傳出去,而ref可以把值傳到方法裡又可以把值傳到方法外;