每一種語(yǔ)言都有非常多的關(guān)鍵字,而且這些關(guān)鍵字也都大同小異,不過畢竟還是有些許的不一樣。有些關(guān)鍵字大家碰到的多了,自然就熟悉了,但是有些關(guān)鍵字用得不大多,或者是新引入的,所以就不大熟悉了。我平常在用的時(shí)候,就是會(huì)碰到一些關(guān)鍵字,感覺有點(diǎn)生疏,平常也會(huì)把這些我不懂的關(guān)鍵字的用法了解一下并記錄下來。想到應(yīng)該也有很多跟我同樣的人,所以就把我的記錄跟大家分享一下。請(qǐng)各位tx多多指正!
訪問關(guān)鍵字
    base:用于派生類中訪問基類的成員

  • 調(diào)用基類上已被其他方法重寫的方法

    1 public override void GetInfo()
    2 {
    3 base.GetInfo(); // 調(diào)用基類上的GetInfo方法
    4 }

  • 指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)用的基類構(gòu)造函數(shù)

    1 public MyDerived() : base() // 調(diào)用基類的構(gòu)造函數(shù)
    2 {}

    從靜態(tài)方法中使用base關(guān)鍵字是錯(cuò)誤的。
轉(zhuǎn)換關(guān)鍵字
explicit:用于聲明用戶定義的顯式類型轉(zhuǎn)換運(yùn)算符

1 class MyType
2 {
3 public static explicit operator MyType(int i)
4     {
5 // 從int轉(zhuǎn)換到MyType類型的代碼
6     }
7 }

顯式轉(zhuǎn)換運(yùn)算符必須通過類型轉(zhuǎn)換調(diào)用

1 int i;
2 MyType x = (MyType)i; // int到MyType類型的轉(zhuǎn)換需要進(jìn)行類型轉(zhuǎn)換

    如果轉(zhuǎn)換操作可能導(dǎo)致異常或信息丟失,則應(yīng)用explicit關(guān)鍵字標(biāo)記它。
    implicit:用于聲明用戶定義的隱式轉(zhuǎn)換運(yùn)算符 

1 class MyType
2 {
3 public static implicit operator int(MyType m)
4     {
5 // 從MyType轉(zhuǎn)換到int類型的代碼
6     }
7 }

1 MyType x;
2 int i = x;  // 隱式地調(diào)用MyType的MyType到int類型的轉(zhuǎn)換運(yùn)算符

隱式轉(zhuǎn)換可以通過消除不必要的類型轉(zhuǎn)換來提高源代碼的可讀性。
    一般情況下,調(diào)用某一個(gè)隱式轉(zhuǎn)換時(shí),應(yīng)當(dāng)絕不會(huì)引發(fā)異常,并且不會(huì)造成信息丟失。否則,應(yīng)將其標(biāo)記為explicit。
方法參數(shù)關(guān)鍵字
    如果聲明方法的參數(shù)時(shí)沒有指明ref或out,該參數(shù)將具有與該方法相關(guān)的值。這個(gè)值在方法中能被更改,但是當(dāng)程序返回到調(diào)用過程時(shí),這種改動(dòng)不會(huì)被保留。

    params:用于指定在參數(shù)數(shù)目可變時(shí)帶有參數(shù)的方法參數(shù)
    在方法聲明中的params關(guān)鍵字之后不允許引入任何其他參數(shù),但在其前面可以有其他參數(shù)。而且在方法聲明中只允許使用一個(gè)params關(guān)鍵字。

 1 public static void UseParams(params int[] list)
 2 {
 3 for(int i = 0; i < list.Length; i++)
 4     {
 5         Console.WriteLine(list[i]);
 6     }
 7 }
 8
 9 public static void Main()
10 {
11     UseParams(1,2,3);
12 int[] myArray = new int[3] { 10,11,12 };
13     UseParams(myArray);
14 }

    ref、out  使方法可以引用傳遞到該方法的那一個(gè)變量,當(dāng)程序轉(zhuǎn)至調(diào)用方法時(shí),在方法中對(duì)參數(shù)所做的任何改動(dòng)都將傳給該變量。
    ref參數(shù)的值將被傳遞到ref參數(shù),故必須首先初始化;而out參數(shù)不然,它的值不會(huì)被傳遞到該out參數(shù),故不必首先初始化,但它必須在方法返回以前為out參數(shù)賦值。
    屬性不是變量,不能作為ref/out參數(shù)。