標籤:style http color 使用 os ar line new
C#中的基本類型都是值類型是在棧中建立的,而對象是參考型別是在堆中建立的,需要使用new關鍵字。
構造方法:
構造方法與類同名,沒有傳回型別。
This關鍵字:
限定被相似的名稱隱藏的成員,例如:
public Employee(string name, string alias){ // Use this to qualify the fields, name and alias: this.name = name; this.alias = alias;}
將對象作為參數傳遞到其他方法
Class myClass{ Public void foo(OtherClass otherObject){otherObject.Bar(this);}}
有一個myClass.foo的方法,在方法中調用otherObject.Bar方法,傳入對myClass當前執行個體的引用。這樣Bar方法就可以使用當前myClass當前執行個體的公開方法和成員了。
聲明索引器,例如:
public int this[int param]{ get { return array[param]; } set { array[param] = value; }}
由於靜態成員函數存在於類一級,並且不是對象的一部分,因此沒有 this 指標。 在靜態方法中引用 this 是錯誤的
從重載構造方法中調用另一個:
Class myClass{ Public myCall (int i){//} Public myCall ():this(42){//}}這個例子中,預設構造方法使用this關鍵字調用參數為整數的重載構造方法
靜態成員:
非靜態類可以包含靜態方法、欄位、屬性或事件。 即使沒有建立類的執行個體,也可以調用該類中的靜態成員。 始終通過類名而不是執行個體名稱訪問靜態成員。 無論對一個類建立多少個執行個體,它的靜態成員都只有一個副本。 靜態方法和屬性不能訪問其包含類型中的非靜態欄位和事件,並且不能訪問任何對象的執行個體變數(除非在方法參數中顯式傳遞)。
更常見的做法是聲明具有一些靜態成員的非靜態類,而不是將整個類聲明為靜態類。 靜態欄位有兩個常見的用法:一是記錄已執行個體化對象的個數,二是儲存必須在所有執行個體之間共用的值。
靜態方法可以被重載但不能被重寫,因為它們屬於類,不屬於類的任何執行個體。
雖然欄位不能聲明為 static const,但 const 欄位的行為在本質上是靜態。 這樣的欄位屬於類型,不屬於類型的執行個體。 因此,可以同對待靜態欄位一樣使用 ClassName.MemberName 標記法來訪問 const 欄位。 不需要對象執行個體。
C# 不支援靜態局部變數(在方法範圍內聲明的變數)。
instances
public class Cat{ public Cat() { instances++; } public static void HowManyCats() { Console.WriteLine("{0} cats adopted", instances); } private static int instances = 0;}public class Tester{ static void Main() { Cat.HowManyCats(); Cat frisky = new Cat(); Cat.HowManyCats(); Cat whiskers = new Cat(); Cat.HowManyCats(); Console.ReadLine(); }}如果聲明了靜態構造方法,必須保證靜態構造方法在執行個體建立前運行。靜態構造方法前沒有存取修飾詞,且不能訪問非靜態成員變數,故上例中instance 也是靜態變數