ref傳值和out傳值

目錄

ref,out區別

out傳值

ref傳值


ref,out區別

out傳值

1.定義方法時,參數用out修飾,在調用該方法的時候,參數也需要用out修飾。

2.在定義方法時,必須給參數賦初值。

2.在調用該方法時,可以賦初值,也可以不賦初值。

4.out這個單詞是“出去”的意思,所以參數加out就是將方法裏面賦的那個值傳到外面去了,方法外面賦不賦值都不起作用,所以說out只能將在方法裏面賦的初值傳出去,但不能將外面賦的值傳入。

5.out一般用在函數需要有多個返回值的場所

下面這個例子就是使用out傳值

class Program
    {
        static void Main(string[] args)
        {
            //int number1=90;		//參數使用out修飾,AddNumber方法外面也可以賦值,但是調用方法後的結果仍然是110
            int number1;			//參數使用out修飾,AddNumber方法外面可以不給變量賦值
            int sum=AddNumber(out number1);		//AddNumber方法中參數用out修飾,調用此方法時,參數也需要用out修飾
            Console.WriteLine(sum);            //顯示的結果爲110
            Console.ReadKey();
        }

        public static int AddNumber(out int num1)
        {
            num1=100;			//方法的參數用out修飾,必須在方法裏面給它賦值
            return num1+10;		//無論方法外面num1的值是多少,返回結果都是110
        }
    }

out一般用在函數需要有多個返回值的場所,下面這個例子就是用out傳值,有三個返回值

	class Program
    {
        static void Main(string[] args)
        {
            int number1;
            int number2;
            int sum = Sum(out number1,out number2); 		            //調用Sum方法
            Console.WriteLine("{0},{1},{2}", number1, number2, sum);	//顯示3個值:10,20,30
            Console.ReadKey();
        }

        public static int Sum(out int num1, out int num2)
        {
            num1 = 10;				//使用out,必須在方法裏面賦初值,第一個參數值爲10
            num2 = 20;				//使用out,必須在方法裏面賦初值,第二個參數值爲20
            return num1 + num2;		//返回兩個數之和
        }
    }

ref傳值

1.ref的用法和out有所不同,相同點是,ref和out一樣,方法中的參數用ref修飾,調用此方法的時候參數也需要用ref修飾。

2.不同的是,out只能將值傳出,但是ref既可以傳入,也可以傳出。想要傳入,必須在方法外賦值,也就是說,傳入方法中的參數必須現在外面被初始化。方法裏面可以賦初值,也可以不賦初值。

下面這段代碼,在Show方法中沒有給num1,num2賦初值,在調用該方法時,給參數賦了初值10和20,這時候,調用show方法的時候,會將10,20傳進show方法中,然後在將求和結果30返回,這就是ref將值傳入。

    class Program
    {
        static void Main(string[] args)
        {
            //ref 用的時候必須要給方法外這個變量賦初值,和out有區別,out可以把方法裏的值傳出去,ref可以把值傳到方法裏,又可以把值傳到方法外
            int number1=10 ;
            int number2=20 ;
            int sum = Show(ref number1, ref number2);
            Console.WriteLine("{0}",number1);
            Console.WriteLine("{0}", number2);
            Console.WriteLine("{0}", sum);        //顯示結果30
            Console.ReadKey();
        }

        public static int Show(ref int num1, ref int num2)
        {
            return num1 + num2;
        }
    }

而下面這段代碼,在show方法中給參數賦了初值100,200,在調用該方法的時候也賦了初值,這時候,在程序在調用show方法的時候,先將10,20的值傳進show方當中,但是此時,裏面兩個參數有了初值100和200,這時候返回傳出的結果四100+200,也就是傳出去300。即ref可傳入,也可傳出。

        static void Main(string[] args)
        {
            //ref 用的時候必須要給方法外這個變量賦初值,和out有區別,out可以把方法裏的值傳出去,ref可以把值傳到方法裏,又可以把值傳到方法外
            int number1=10 ;
            int number2=20 ;
            int sum = Show(ref number1, ref number2);
            Console.WriteLine("{0}",number1);      //100
            Console.WriteLine("{0}", number2);     //200
            Console.WriteLine("{0}", sum);         //300
           Console.ReadKey();
        }

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

有不對的地方,歡迎批評指正~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章