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