一看這個標題你可能會一愣,這是個什麼東東。看個小例子:
static void main()
{
int a=10;
MyClass mc=new MyClass();
}
呵呵,這裡的a與mc就是本地變量,它和字段一樣,也保存數據。字段通常保存和對象狀態有關的數據,而創建本地變量經常用於保存本地或臨時數據。呵呵,簡單吧,但是它和實例字段有何區別:
實例字段
本地變量
生存期 從實例創建開始,直到實例不再被訪問 從它在塊中被聲明開始,到塊執行結束 隱式初始化 初始化成該類的默認值 沒有隱式初始化。如果變量在使用之前沒有被賦值,編譯器將報錯 存儲區域 由於實例字段是類的成員,所有的字段都存儲在堆裡,無論它是指類型還是引用類型 值類型:存儲在棧裡
我們知道var可以自動推斷變量的類型,如上代碼,我們可以發現在聲明開始部分提供類型名時,編譯器能從初始化語句的右邊推斷出來它的類型,所以,在聲明的開始部分包括顯示的類型名多余的。
為了避免這種多余,可以在聲明的開始部分的顯示類型名的位置使用新的關鍵字var。上面代碼可以改成:
static void main()
{
var a=10;
var mc=new MyClass();
}
使用值參數,通過將實參的值復制到形參的方式把數據傳遞給方法。方法被調用時,系統做如下操作:
public void Add(out int outValue) { int var1=outValue+2; }上述代碼輸出參數在方法賦值之前被讀取將會報錯。
我們都知道創建一個對象是由new 後面跟著一個類構造函數及其參數列表組成。
對象初始化語句擴展了創建語法,在表達式的尾部放置了一組成員初始化的語句。允許我們創建新的對象實例時,設置字段和屬性的值。
該語法有兩種形式:一種形式是包括構造函數的參數列表,另一種是不包括。注意第一種形式可以省略圓括號。
new TypeName {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}
new TypeName {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}
示例如下:
public static void main()
{
Point p1=new Point();
Point p2=new Point{X=4,Y=5,Z=6};
Point p3=new Point(9){X=7,Y=8};
}
public class Point
{
public int X=1;
public int Y=2;
public int Z=3;
public Point(int z) { Z=z; }
}
this關鍵字在類中使用,是對當前實例的引用。它只能用在下列類成員的代碼中
呵呵,上面這些內容我想大部分童鞋都能一下看懂,這都是些很基礎的東西,有些可能都在不知不覺中用爛了,只是沒有注意過還有個這麼個東東。所以我給總結了一些供大家參考,希望大家能有所收獲。