類類型是由字段數據(成員變量)和操作字段數據的成員(屬性、方法、構造函數、事件等)所構成的自定義類型。其中字段數據表示類實例(對象)的狀態。
在C#中,類使用class關鍵字定義,例如:
public class Car
{
//Car的字段(狀態)
private int _speed;
private string _name;
//Car操作字段的屬性
public int Speed
{
set {this._speed=value;}
get{return this._speed;}
}
public string Name
{
set { this._name=value;}
get{return this._name;}
}
//顯式定義默認構造函數
public Car(){}
//自定義構造函數
public Car(string name,int speed)
{
this._name=name;
this._speed=speed;
}
//Car的功能(方法)
public void ShowState()
{Console.WriteLine("Car {0} is going {1} MPH", this._name,this. _speed);}
}
另:類的字段很少被定義為公開的,為了保護狀態數據的完整性,最好把字段數據定義為私有(或者受保護的),然後通過屬性對外提供受控制的訪問。
使用new關鍵字來分配對象
對象必須使用了new關鍵字來分配到內存,如果不是用new,而隨後嘗試使用類變量的話,會收到一個編譯錯誤。
public static void Main(string[] args)
{
//錯誤,忘記使用new
Car c;
c.Name="Bruce";
}
正確的例子:
public static void Main(string[] args)
{
//創建Car對象。
Car c;//聲明了指向尚未創建的Car對象的引用。
c=new Car("bruce wong",150);//通過new把有效的引用賦給對象,這引用才會指向內存有效的對象。
c.ShowState();
Console.ReadKey(true);
}
類構造函數
作用:給對象的字段(狀態)賦值,它允許在創建對象時創建其狀態。
構造函數是類特殊的方法,在使用new關鍵字創建對象時被間接調用。
注意:構造函數沒有返回值(即使是void),它的名字總是和類的名字一樣。
默認構造函數
C#提供一個默認的構造函數,需要時你可以重新定義,默認構造函數不接受任何參數。它把新的對象分配到內存和確保所有的字段都被設置為正確的默認值。當你對這些默認值不滿意,你可以重新定義默認構造函數。如:
public Car()
{
this._name="My Car