目錄
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;
}
有不對的地方,歡迎批評指正~~~