類的構造函數。
Main() 方法
每個 C# 應用程序都必須http://msdn.microsoft.com/vstudio/java/gettingstarted/csharpforjava/#Arrays in C#只能包含一個 Main() 方法,Main() 方法指定程序從何處開始執行。注意,在 C# 中,Main() 用大寫字母開頭,而 Java 使用小寫的 main()。
Main() 只能返回 int 或 void,並且有一個可選的字符串數組參數來表示命令行參數:
static int Main (string[] args)
{
...
return 0;
}
字符串數組參數可以包含任何傳入的命令行參數,這與 Java 中完全一樣。因此,args[0] 指定第一個命令行參數,而 args[1] 表示第二個參數,等等。與 C++ 不同的是,args 數組不包含 EXE 文件的名稱。
其他方法
當將參數傳遞給方法時,它們可能通過值傳遞,也可能通過引用傳遞。值參數只提取任何變量的值以在方法中使用,因而調用代碼中的變量值不受方法中對這些參數所執行的操作的影響。
而引用型參數指向在調用代碼中聲明的變量,因而在通過引用傳遞時,方法將修改該變量的內容。
通過引用傳遞
在 Java 和 C# 中,引用對象的方法參數總是通過引用傳遞,而基本數據類型參數則通過值傳遞。
在 C# 中,所有參數在默認情況下都是通過值傳遞的。要通過引用進行傳遞,我們需要指定關鍵字 ref 或 out 中的一個。這兩個關鍵字的不同之處在於參數的初始化。ref 參數必須在使用前進行初始化,而 out 參數無需在傳遞前進行顯式初始化,並且任何先前的值都會被忽略。
請注意,當方法將引用類型作為參數使用時,引用本身是通過值傳遞的。然而,引用仍然指向內存中的同一對象,因此對對象的屬性所做的任何改變在方法退出之後將保持不變。但是,因為引用本身是通過值傳遞的,所以在方法內它應該改為指向一個不同的對象甚至一個新對象,而一旦方法執行完畢,引用就會恢復為指向原來的對象,即使原來的對象是未賦值的也同樣如此。
ref 關鍵字
當我們希望調用的方法永久性地改變用作參數的變量的值時,我們可以在參數中指定此關鍵字。發生傳遞的不是在調用中使用的變量值,而是對變量本身的引用。然後,方法作用於引用,這樣,在方法執行過程中對參數所做的更改就保存到用作方法的參數的原始變量中。
下面的代碼用 Add() 方法對此進行了說明,其中,第二個 int 參數是使用 ref 關鍵字通過引用傳遞的:
using System;
public class RefClass
{
public static void Main(string[] args)
{
int total = 20;
Console.WriteLine("Original value of 'total': {0}", total);
// Call the Add method
Add (10, ref total);
Console.WriteLine("Value after Add() call: {0}", total);
}
public static void Add (int i, ref int result)
{
result += i;
}
}
這個簡單示例的輸出結果表明,對 result 參數所做的改變反映在 Add() 調用所用的變量 total 中:
Original value of 'total': 20
Value after Add() call: 30
這是因為 result 參數引用了調用代碼中的 total 變量所占用的實際內存位置。請注意,類的屬性不是一個變量,並且不能直接用作 ref 類型的參數。
注意,在調用方法時,ref 關鍵字必須在參數之前,在方法聲明中同樣如此。