1. 程式人生 > 其它 >C#,一些非常簡單但應該知道的知識點

C#,一些非常簡單但應該知道的知識點

1.本地變數

一看這個標題你可能會一愣,這是個什麼東東。看個小例子:

static void main()
{
   int a=10;
   MyClass mc=new MyClass();
} 

呵呵,這裡的a與mc就是本地變數,它和欄位一樣,也儲存資料。欄位通常儲存和物件狀態有關的資料,而建立本地變數經常用於儲存本地或臨時資料。呵呵,簡單吧,但是它和例項欄位有何區別:

例項欄位

本地變數

生存期

從例項建立開始,直到例項不再被訪問

從它在塊中被宣告開始,到塊執行結束

隱式初始化

初始化成該類的預設值

沒有隱式初始化。如果變數在使用之前沒有被賦值,編譯器將報錯

儲存區域

由於例項欄位是類的成員,所有的欄位都儲存在堆裡,無論它是指型別還是引用型別

值型別:儲存在棧裡引用型別:引用儲存在棧裡,資料存放在堆裡

2.var 關鍵字

我們知道var可以自動推斷變數的型別,如上程式碼,我們可以發現在宣告開始部分提供型別名時,編譯器能從初始化語句的右邊推斷出來它的型別,所以,在宣告的開始部分包括顯示的型別名多餘的。

為了避免這種多餘,可以在宣告的開始部分的顯示型別名的位置使用新的關鍵字var。上面程式碼可以改成:

static void main()
{
   var a=10;
   var mc=new MyClass();
} 

3.值引數

使用值引數,通過將實參的值複製到形參的方式把資料傳遞給方法。方法被呼叫時,系統做如下操作:

  • 在棧中為形參分配空間
  • 將實參的值複製給形參

4.引用引數(ref)
  • 不會為形參在棧上分配記憶體
  • 實際情況是,形參的引數名將作為實參變數的別名,指向相同的記憶體位置
  • 實參必須是變數,在用作實參前必須被賦值。如果是引用型別變數,可以賦值一個引用或者null

5.輸出引數(out)
  • 在方法內部,輸出引數在能夠使用之前必須被賦值。這就意味著引數的初始值是不起作用的,所以沒有必要在方法呼叫前為引數賦值。
  • 在方法返回之前,方法內部任何路徑都必須為所有輸出引數進行一次賦值。 如下程式碼:

    public void Add(out int outValue)
     	{ 	   
    int var1=outValue+2; 	
      }

上述程式碼輸出引數在方法賦值之前被讀取將會報錯。

6.屬性(set,get)
  • 屬性是一個函式成員
  • 它不為資料的儲存分配記憶體
  • 它可以執行程式碼
  • set訪問器擁有一個單獨的隱式的值參,名稱為Value,與屬性的型別相同且擁有一個返回型別void
  • get訪問器沒有引數,擁有一個與屬性型別相同的返回型別。

7.物件初始化語句

      我們都知道建立一個物件是由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; 		} 
	}

8.this關鍵字

this關鍵字在類中使用,是對當前例項的引用。它只能用在下列類成員的程式碼中

  • 例項建構函式
  • 例項方法
  • 屬性和索引器的例項訪問權 由於靜態成員不是例項的一部分,所以不能在任何靜態函式成員的程式碼中使用this關鍵字。更適當的說,this用於下列目的:
  • 用於區分類的成員和本地變數或引數
  • 做為呼叫方法的實參

呵呵,上面這些內容我想大部分童鞋都能一下看懂,這都是些很基礎的東西,有些可能都在不知不覺中用爛了,只是沒有注意過還有個這麼個東東。所以我給總結了一些供大家參考,希望大家能有所收穫。