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