類聲明定義新的引用類型。一個類可以從另一個類繼承,並且可以實現多個接口。
類成員可以包括:常數、字段、方法、屬性、事件、索引器、運算符、實例構造函數、析構函數、靜態構造函數和嵌套類型聲明。每個成員都有關聯的可訪問性,它控制能夠訪問該成員的程序文本區域。有五種可能的可訪問性形式。下表概述了這些形式。
形式 直觀含義public不限制訪問。
protected訪問限於該成員所屬的類或從該類派生來的類型。
internal訪問限於此程序。
protected internal訪問限於此程序或從該成員所屬的類派生的類型。
private訪問限於該成員所屬的類型。
示例
using System; class MyClass { public MyClass() { Console.WriteLine("Instance constructor"); } public MyClass(int value) { MyField = value; Console.WriteLine("Instance constructor"); } ~MyClass() { Console.WriteLine("Destructor"); } public const int MyConst = 12; public int MyField = 34; public void MyMethod(){ Console.WriteLine("MyClass.MyMethod"); } public int MyProperty { get { return MyField; } set { MyField = value; } } public int this[int index] { get { return 0; } set { Console.WriteLine("this[{0}] = {1}", index, value); } } public event EventHandler MyEvent; public static MyClass operator+(MyClass a, MyClass b) { return new MyClass(a.MyField + b.MyField); } internal class MyNestedClass {} }
顯示了一個類,它包含了具有各種可訪問性的成員。示例
class Test { static void Main() { // Instance constructor usage MyClass a = new MyClass(); MyClass b = new MyClass(123); // Constant usage Console.WriteLine("MyConst = {0}", MyClass.MyConst); // Field usage a.MyField++; Console.WriteLine("a.MyField = {0}", a.MyField); // Method usage a.MyMethod(); // Property usage a.MyProperty++; Console.WriteLine("a.MyProperty = {0}", a.MyProperty); // Indexer usage a[3] = a[1] = a[2]; Console.WriteLine("a[3] = {0}", a[3]); // Event usage a.MyEvent += new EventHandler(MyHandler); // Overloaded operator usage MyClass c = a + b; } static void MyHandler(object sender, EventArgs e) { Console.WriteLine("Test.MyHandler"); } internal class MyNestedClass {} }
顯示了這些成員的用法。