不論你是新手還是老手,是否對C#的某些關鍵字有些摸不到頭腦呢?現在我就和大家一起學習一下這些關鍵字的含義
類型
Void
用作方法的返回類型時,void 關鍵字指定方法不返回值。
在方法的參數列表中不允許使用 void。采用以下形式聲明一個無參數的、不返回值的方法:
Ovid SampleMethod();
Var
在方法范圍中聲明的變量可以具有隱式類型 var。隱式類型的本地變量是強類型變量(就好像您已經聲明該類型一樣),但由編譯器確定類型。 有返回值
引用類型
Class
類是使用關鍵字 class 聲明的
委托
委托類型的聲明與方法簽名相似,有一個返回值和任意數目任意類型的參數:
public delegate void TestDelegate(string message);
public delegate int TestDelegate(MyType m, long num);
delegate 是一種可用於封裝命名或匿名方法的引用類型。委托類似於 C++ 中的函數指針;但是,委托是類型安全和可靠的。
接口
接口只包含方法、屬性、事件或索引器的簽名。成員的實現是在實現接口的類或結構中完成的
Object
object 類型在 .NET Framework 中是 Object 的別名。在 C# 的統一類型系統中,所有類型(預定義類型、用戶定義類型、引用類型和值類型)都是直接或間接從 Object 繼承的。可以將任何類型的值賦給 object 類型的變量。將值類型的變量轉換為對象的過程稱為“裝箱”。將對象類型的變量轉換為值類型的過程稱為“取消裝箱”。
String
string 類型表示零或更多 Unicode 字符組成的序列。string 是 .NET Framework 中 String 的別名。
盡管 string 是引用類型,但定義相等運算符(== 和 !=)是為了比較 string 對象(而不是引用)的值。這使得對字符串相等性的測試更為直觀。
修飾符
Override
要擴展或修改繼承的方法、屬性、索引器或事件的抽象實現或虛實現,必須使用 override 修飾符。
Virtual
virtual 關鍵字用於修飾方法、屬性、索引器或事件聲明,並使它們可以在派生類中被重寫。例如,此方法可被任何繼承它的類重寫。
volatile
volatile 關鍵字指示一個字段可以由多個同時執行的線程修改。聲明為 volatile 的字段不受編譯器優化(假定由單個線程訪問)的限制。這樣可以確保該字段在任何時間呈現的都是最新的值。
unsafe
unsafe 關鍵字表示不安全上下文,該上下文是任何涉及指針的操作所必需的。
static
使用 static 修飾符聲明屬於類型本身而不是屬於特定對象的靜態成員。static 修飾符可用於類、字段、方法、屬性、運算符、事件和構造函數,但不能用於索引器、析構函數或類以外的類型。
sealed
當對一個類應用 sealed 修飾符時,此修飾符會阻止其他類從該類繼承。在下面的示例中,類 B 從類 A 繼承,但是任何類都不能從類 B 繼承。
readonly
readonly 關鍵字是可以在字段上使用的修飾符。當字段聲明包括 readonly 修飾符時,該聲明引入的字段賦值只能作為聲明的一部分出現,或者出現在同一類的構造函數中。
extern
extern 修飾符用於聲明在外部實現的方法。extern 修飾符的常見用法是在使用 Interop 服務調入非托管代碼時與 DllImport 屬性一起使用。在這種情況下,還必須將方法聲明為 static
event
event 關鍵字用於在發行者類中聲明事件。
const
const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值是常數,不能被修改。
abstract
abstract 修飾符可以和類、方法、屬性、索引器及事件一起使用。在類聲明中使用 abstract 修飾符以指示某個類只能是其他類的基類。標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。
訪問修飾符
internal
internal 關鍵字是類型和類型成員的訪問修飾符。只有在同一程序集的文件中,內部類型或成員才是可訪問的
private
private 關鍵字是一個成員訪問修飾符。私有訪問是允許的最低訪問級別。私有成員只有在聲明它們的類和結構體中才是可訪問的
protected
protected 關鍵字是一個成員訪問修飾符。受保護成員在其所在的類中可由派生類實例訪問。
public
public 關鍵字是類型和類型成員的訪問修飾符。公共訪問是允許的最高訪問級別。
abstract 可以和類、方法、屬性、索引器及事件一起使用,
標識一個可以擴展但不能被實體化的、必須被實現的類或方法。
as 一個轉換操作符,如果轉換失敗,就返回null。
base 用於訪問被派生類或構造中的同名成員隱藏的基類成員。
catch 定義一個代碼塊,在特定類型異常拋出時,執行塊內代碼。
參見try和finally。
checked 既是操作符又是語句。
確保編譯器運行時,檢查整數類型操作或轉換時出現的溢出。
const 標識一個可在編譯時計算出來的變量值,即一經指派不可修改的值。
delegate 指定一個聲明為一種委托類型。委托把方法封裝為可調用實體,
能在委托實體中調用。
enum 表示一個已命名常量群集的值類型。
event 允許一個類或對象提供通知的成員,他必須是委托類型。
explicit 一個定義用戶自定義轉換操作符的操作符,
通常用來將內建類型轉換為用戶定義類型或反向操作。
必須再轉換時調用顯示轉換操作符。
extern 標識一個將在外部(通常不是c#語言)實現的方法。
finally 定義一個代碼塊,在程序控制離開try代碼快後執行。參見try和catch。
fixed 在一個代碼塊執行時,在固定內存位置為一個變量指派一個指針。
foreach 用於遍歷一個群集的元素。
goto 一個跳轉語句,將程序執行重定向到一個標簽語句。
implicit 一個操作符,定義一個用戶定義的轉換操作符。
通常用來將預定義類型轉換為用戶定義類型或反向操作。
隱式轉換操作符必須在轉換時使用。
interface 將一個聲明指定為接口類型,即實現類或構造必須遵循的合同。
internal 一個訪問修飾符。
namespace 定義一個邏輯組的類型和命名空間。
operator 用來聲明或多載一個操作符。
out 標識一個參數值會受影響的參數,但在傳入方法時,
該參數無需先初始化。
params 聲明一個參數數組。如果使用,必須修改指定的最後一個參數。
允許可選參數。
readonly 標識一個變量的值在初始化後不可修改。
ref 標識一個參數值可能會受影響的參數。
sealed 防止類型被派生,防止方法和property被覆載。
sizeof 一個操作符,以byte為單位返回一個值類型的長度。
stackalloc 返回在堆上分配的一個內存塊的指針。
struct struct是一種值類型,可以聲明常量、字段、方法、property、
索引器、操作符、構造器和內嵌類型。
throw 拋出一個異常。
try 異常處理代碼塊的組成部分之一。try代碼塊包括可能會
拋出異常的代碼。參閱catch和finally關鍵字。
typeof 一個操作符,返回傳入參數的類型。
unchecked 禁止溢出檢查。
unsafe 標注包含指針操作的代碼塊、方法或類。
using 當用於命名空間時,using關鍵字允許訪問該命名空間中的類型,
而無需指定其全名。也用於定義finalization操作的范圍。
virtual 一個方法修飾符,標識可被覆載的方法。
volatile 標識一個可被操作系統、某些硬件設備或並發線程修改的attribute。
一般的構造函數總是public類型的,如果是private類型的,表明類不能被實例化,這通常用於只含有靜態的成員的類。
在派生類中聲明對虛方法的重載,要求在聲明中加上override關鍵字,而且不能有new,static或virtual修飾符。
密封類在聲明中使用sealed修飾符,這樣就可以防止該類被其它類繼承。