類就像特定對象的藍(lán)圖。在現(xiàn)實(shí)世界中,每個對象都有一些顏色,形狀和功能-例如,豪華跑車法拉利。法拉利是豪華車類型的對象。豪華車是一門表明某些特性的類,例如速度,顏色,形狀,內(nèi)飾等。因此,制造滿足這些要求的汽車的任何公司都是豪華車類型的對象。例如,寶馬,蘭博基尼,凱迪拉克的每輛汽車都是“豪華車”類的對象。在這里,“豪華車”是一類,每一輛實(shí)物汽車都是豪華車類的對象。
同樣,在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類定義了一些屬性,字段,事件,方法等。類定義了數(shù)據(jù)的種類及其對象將具有的功能。
類使您可以通過對其他類型,方法和事件的變量進(jìn)行分組來創(chuàng)建自定義類型。
在C#中,可以使用 class 關(guān)鍵字定義一個類。
public class MyClass { public string myField = string.Empty; public MyClass() { } public void MyMethod(int parameter1, string parameter2) { Console.WriteLine("First Parameter {0}, second parameter {1}", parameter1, parameter2); } public int MyAutoImplementedProperty { get; set; } private int myPropertyVar; public int MyProperty { get { return myPropertyVar; } set { myPropertyVar = value; } } }
下圖顯示了C#類的重要構(gòu)建塊。
訪問修飾符應(yīng)用于類,方法,屬性,字段和其他成員的聲明。它們定義了類及其成員的可訪問性。公共,私有,受保護(hù)和內(nèi)部是C#中的訪問修飾符。我們將在關(guān)鍵字部分中對此進(jìn)行了解。
該字段是一個具有值的類級變量。通常,字段成員應(yīng)具有私有訪問修飾符并與屬性一起使用。
一個類可以具有參數(shù)化或無參數(shù)的構(gòu)造函數(shù)。創(chuàng)建類的實(shí)例時(shí),將調(diào)用構(gòu)造函數(shù)??梢允褂迷L問修飾符和類名稱來定義構(gòu)造函數(shù):
<access modifiers> <class name>(){ }
class MyClass { public MyClass() { } }
可以使用以下模板定義方法:
{access modifier} {return type} MethodName({parameterType parameterName})
public void MyMethod(int parameter1, string parameter2) { // 在此處編寫您的方法代碼。 }
可以使用getter和setter定義屬性,如下所示:
private int _myPropertyVar; public int MyProperty { get { return _myPropertyVar; } set { _myPropertyVar = value; } }
屬性封裝了一個私有字段。它提供了getters(get {})來檢索基礎(chǔ)字段的值,并提供setters(set {})來設(shè)置基礎(chǔ)字段的值。在上面的示例中,_myPropertyVar是一個私有字段,無法直接訪問。只能通過MyProperty訪問。因此,MyProperty封裝了_myPropertyVar。
您還可以在get和set中應(yīng)用一些其他邏輯,如以下示例所示。
private int _myPropertyVar; public int MyProperty { get { return _myPropertyVar / 2; } set { if (value > 100) _myPropertyVar = 100; else _myPropertyVar = value; ; } }
從C#3.0開始,如果您不想在get或set中應(yīng)用某些邏輯,則可以輕松進(jìn)行屬性聲明。
以下是自動實(shí)現(xiàn)的屬性的示例:
public int MyAutoImplementedProperty { get; set; }
請注意,上述屬性示例中沒有私有后備字段。支持字段將由編譯器自動創(chuàng)建。您可以像使用類的常規(guī)屬性一樣使用自動化屬性。當(dāng)屬性訪問器中不需要其他邏輯時(shí),自動實(shí)現(xiàn)的屬性只是為了輕松聲明屬性。
命名空間是一組相關(guān)類和命名空間的容器。命名空間還用于為命名空間名稱內(nèi)的類提供唯一的名稱。命名空間和類使用點(diǎn)(.)表示。
在C#中,可以使用 namespace 關(guān)鍵字定義命名空間。
namespace CSharpTutorials { class MyClass { } }
在上面的示例中,MyClass的完全限定類名是 CSharpTutorials.MyClass.
命名空間可以包含其他命名空間。內(nèi)部命名空間可以使用(.)分隔。
namespace CSharpTutorials.Examples { class MyClassExample { } }
在上面的示例中,MyClassExample 的完全限定的類名稱為 CSharpTutorials.Examples.MyClassExample。