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