概要
C# 是一種面向?qū)ο蟮木幊陶Z言。 可以定義類以表示應用程序中的類型,然后創(chuàng)建對象作為這些類的實例。
在 C# 中,類可以包含字段、方法、屬性和索引器。 在本文中,您將學習如何在 C# 中新建一個表示棒球隊 (Baseball Team) 的類。 將給該類定義字段、方法和屬性。接著將創(chuàng)建此類類型的一個對象并利用其方法和屬性。
新建類
1. 從項目菜單上,單擊添加類。?
2. 在添加新項對話框的類名中,鍵入 BaseballTeam,然后單擊打開。?
3. 在“代碼視圖”窗口中檢查該新類的代碼。?
定義字段和構(gòu)造函數(shù)
1. 在視圖菜單上,單擊類視圖。 在“類視圖”窗口中,展開 ClassesAndObjects 項目,然后展開 ClassesAndObjects 名稱空間。 右鍵單擊 BaseballTeam 類,選擇添加,然后單擊添加字段。?
2. 在 C# 字段向?qū)е校瑢⒆侄卧L問設置為 private,并將字段類型設置為 string。 在字段名中,鍵入 name。單擊完成。 此時,就會將以下字段添加到該類中:
private string name;
?
3. 重復步驟 1 和 2(或手動鍵入代碼)以添加另一個字段,如下所示:
private string stadium;
?
4. 再添加兩個字段,并提供初始字段值,如下所示:
?private int wins = 0;
private int defeats = 0;
?
5. 修改該類的構(gòu)造函數(shù),以初始化球隊和體育場 (stadium) 的名稱:
public BaseballTeam(string n, string s)
{
?? this.name = n;
?? this.stadium = s;
}
定義方法
1. 在類視圖中,右鍵單擊 BaseballTeam 類。 選擇添加,然后單擊添加方法。?
2. 將方法訪問設置為 public,并將返回類型設置為 void。 在方法名稱中,鍵入 PlayGame。 添加兩個名為 runsFor 和 runsAgainst 的 int 參數(shù)。單擊完成。 此時,就會將以下方法添加到該類中:
public void PlayGame(int runsFor, int runsAgainst)
{
}
3. 定義方法體,如下所示:
public void PlayGame(int runsFor, int runsAgainst)
{
?? if (runsFor > runsAgainst)
????? this.wins++;
else
????? this.defeats++;
}
4. C# 中的所有類最終都是從名為 Object 的基類繼承而來的。此類定義了所有類的通用功能。以 ToString 方法為例,它返回一個字符串形式的類狀態(tài)。 在您的 BaseballTeam 類中重寫此方法,如下所示: public override string ToString()
{
?? return this.name + ", play at " + this.stadium + ": " +
????????? " W" + this.wins + " L" + this.defeats;
}
定義重載方法
C# 支持重載方法,它是指名稱相同但簽名不同的方法。 在下面的步驟 2 中,將定義 PlayGame 方法的一個重載版本,該方法將比賽結(jié)果作為參數(shù)。
1. 首先,在 BaseballTeam 類中定義一個 enum,如下所示: public enum Result {Win, Lose}
2. 另創(chuàng)建一個 PlayGame 方法,如下所示: public void PlayGame(Result r)
{
?? if (r == Result.Win)
????? this.wins++;
?? else if (r == Result.Lose)
????? this.defeats++;
}
定義屬性
1. 在類視圖中,右鍵單擊 BaseballTeam 類。 選擇添加,然后單擊添加屬性。?
2. 將屬性訪問設置為 public,并將屬性類型設置為 double。 在屬性名中,鍵入 Record。 單擊 get 單選按鈕,然后單擊完成。 此時,就會將以下屬性添加到該類中: public double Record
{
?? get
?? {
????? return 0;
?? }
}
3. 按以下方式修改該屬性,使其返回棒球隊的比賽記錄(例如,如果本隊贏得 10 場比賽,輸?shù)?10 場比賽,則該隊的記錄為 0.5): public double Record
{
?? get
?? {
????? int played = this.wins + this.defeats;
????? return (double)this.wins / played;
?? }
}
4. 添加一個名為 Ballpark 的獲取/設置屬性,如下所示。 該屬性允許讀取或更改棒球隊的 stadium 字段: public string Ballpark
{
?? get
?? {
????? return this.stadium;
?? }
?? set
?? {
????? this.stadium = value;? // value is an implicit parameter
?? }
}
創(chuàng)建并使用一個對象
1. 在“代碼視圖”窗口中顯示 Class1.cs 的代碼。?
2. 在 Main 方法中,使用 new 運算符創(chuàng)建一個 BaseballTeam 對象。 將對該對象的引用賦值給 BaseballTeam 局部變量,如下所示:
BaseballTeam sf = new BaseballTeam("San Francisco Giants",
?????????????????????????????????? "Candlestick Park");
3. 添加下列代碼以便在對象上測試公用方法:
sf.PlayGame(7, 2);
sf.PlayGame(BaseballTeam.Result.Lose);
4. 添加下列語句以檢驗對象的屬性:
Console.Out.WriteLine("Record: " + sf.Record);
sf.Ballpark = "3Com Park";
5. 顯示對象的當前狀態(tài),如下所示:
Console.Out.WriteLine(sf.ToString());
6. 將對該對象的引用設置為 null,表明您不再需要 BaseballTeam 對象。 這樣,就可以將該對象作為垃圾回收(注意,C# 沒有 delete 運算符):
sf = null;
?