通過C#引用傳遞淺談
在向大家詳細(xì)介紹通過C#引用傳遞之前,首先讓大家了解下C# Main() 方法,然后全面介紹通過C#引用傳遞。
C# Main() 方法
每個 C# 應(yīng)用程序都必須http://msdn.microsoft.com/vstudio/java/gettingstarted/csharpforjava/#Arrays in C#只能包含一個 Main() 方法,Main() 方法指定程序從何處開始執(zhí)行。注意,在 C# 中,Main() 用大寫字母開頭,而 Java 使用小寫的 main()。
Main() 只能返回 int 或 void,并且有一個可選的字符串?dāng)?shù)組參數(shù)來表示命令行參數(shù):
- static int Main (string[] args)
- {
- ...
- return 0;
- }
當(dāng)將參數(shù)傳遞給方法時,它們可能通過值傳遞,也可能通過引用傳遞。值參數(shù)只提取任何變量的值以在方法中使用,因而調(diào)用代碼中的變量值不受方法中對這些參數(shù)所執(zhí)行的操作的影響。
而引用型參數(shù)指向在調(diào)用代碼中聲明的變量,因而在通過引用傳遞時,方法將修改該變量的內(nèi)容。
通過C#引用傳遞
在 Java 和 C# 中,引用對象的方法參數(shù)總是通過C#引用傳遞,而基本數(shù)據(jù)類型參數(shù)則通過值傳遞。
在 C# 中,所有參數(shù)在默認(rèn)情況下都是通過值傳遞的。要通過引用進(jìn)行傳遞,我們需要指定關(guān)鍵字 ref 或 out 中的一個。這兩個關(guān)鍵字的不同之處在于參數(shù)的初始化。ref 參數(shù)必須在使用前進(jìn)行初始化,而 out 參數(shù)無需在傳遞前進(jìn)行顯式初始化,并且任何先前的值都會被忽略。
請注意,當(dāng)方法將引用類型作為參數(shù)使用時,引用本身是通過值傳遞的。然而,引用仍然指向內(nèi)存中的同一對象,因此對對象的屬性所做的任何改變在方法退出之后將保持不變。但是,因?yàn)橐帽旧硎峭ㄟ^值傳遞的,所以在方法內(nèi)它應(yīng)該改為指向一個不同的對象甚至一個新對象,而一旦方法執(zhí)行完畢,引用就會恢復(fù)為指向原來的對象,即使原來的對象是未賦值的也同樣如此。
【編輯推薦】