一周學會
c#(類二)
5.例項字段
·例項字段...
w在所有的建構函式中被初始化為預設值(0/false/null)
w可以在一建構函式中顯式初始化
w可以在它們宣告時初始化
sealed class pair
...
private int x;
private int y = 42;
}
回憶一下:在結構的自定義建構函式必須顯式初始化類中的所有例項字段。結構的例項字段只能在建構函式中進行初始化,而不能使用賦值的方法。
而類則比結構方便的多。
類中的所有欄位都預設初始化為預設值。
在類的建構函式中,你可以在字段宣告時進行初始化。
在上面的例子中,建構函式的引數y用字段y來賦值。編譯器通過的原因是字段y已經被賦初值。其實,如果沒有對欄位y進行初始化,編譯器仍然會通過,困為字段y已有預設值0,所以在建構函式中沒有顯式初始化欄位y是不會發生錯誤的。
6.靜態字段
·靜態字段
...
w被預設初始化為0/false/null
w可以在宣告時初始化
w只能通過類名訪問
class pair
private static pair origin = new pair(0,0);
...
private int x, y;
}
pair p = new pair();
...
method(p.origin);//
錯誤,只能通過類名訪問
method(pair.origin); //正確
由static修飾符宣告的字段稱為靜態變數。當類的宣告裝載時,靜態變數就開始存在,直到程式結束時才消失。
靜態變數的初值:
l整型變數為0(包括列舉)
l實型變數為0.0
lbool型變數為false
l引用型變數為null
7.唯讀字段
·唯讀字段
...
w不能被賦值
w不能被用作ref/out
型引數
class pair
public void reset()
private readonly int x, y;
}
一周學會C (屬性一)
一周學會 c 屬性一 1.問題 struct time public void sethour int value private int hour,minute,second static void main 封裝把一些不重要的細節隱藏起來,這樣你可以集中精力處理那些重要的內容。但封裝很難被掌握,...
一周學會C (列舉一)
一周學會 c 列舉一 1.型別 值型別 w變數直接包含它們自己的資料 w區域性變數總是放在棧 stack 中 引用型別 w變數間接指向它們的資料 w區域性變數指向堆 heap 中的物件 列舉 enum 值型別 結構 struct 值型別 類 class 引用型別 介面 inte ce 引用型別 陣列...
一周學會C (值的型別二)
一周學會 c 值的型別二 4.連線 規則1 w除了賦值操作符外的其他二元操作符都是左連線的。x y z 應理解為 x y z 規則2 w賦值操作符和?操作符是右連線的。x y z 應理解為x y z x y z 應理解為x y z a?b c?d e 應理解為a?b c?d e 5.計算時的順序 運...