*out有種“醉翁之意不在酒”的感覺。調用使用了含out參數的函數,目的是為了之后,拿出out修飾的那個變量,而不在于之前它的初值是什么,即便當初賦值了,也無妨。
...
static void Main(string[] args)
{
Console.WriteLine("請輸入你的登錄名");
string name = Console.ReadLine();
string msg;//在這里,賦值也無妨,但是屬于多余。
OutTest(name, out msg);
Console.WriteLine("使用調用了OutTest函數后的變量msg,msg的值是" + msg);
Console.ReadKey();
}
static void OutTest(string logainName, out string message)
{
//在這個函數中,out修飾的參數,必須被賦值。否則,完成該函數,無法拿出對應的值!
if (logainName == "JamesLiang")
{
message = "登錄成功!";
}
else
{
message = "登錄失敗了";
}
}
ref具體代碼實現:
...
static void Main(string[] args)
{
int salary = 3000;//使用之前,必須賦值!
RefTest1(ref salary);
RefTest2(ref salary);
RefTest3(ref salary);
Console.WriteLine("最終薪水還有" + salary.ToString());
}
static void RefTest1(ref int m)
{
m = m - 100;
Console.WriteLine("調用RefTest1方法,薪水還有" + m.ToString());
}
static void RefTest2(ref int m)
{
m = m - 200;
Console.WriteLine("調用RefTest2方法,薪水還有" + m.ToString());
}
static void RefTest3(ref int m)
{
m = m - 300;
Console.WriteLine("調用RefTest3方法,薪水還有" + m.ToString());
}