C#關鍵字及其用法整理

C#(讀做 "Csharp",中文譯音暫時沒有.專業人士一般讀"Csharp",現在很多非專業一般讀"C井"。C#是微軟公司發佈的一種面向對象的、運行於.NETFramework之上的高級程序設計語言。並定於在微軟職業開發者論壇(PDC)上登臺亮相。C#是微軟公司研究員AndersHejlsberg的最新成果。C#看起來與Java有着驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有着明顯的不同,它借鑑了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NETwindows網絡框架的主角,並且C#成爲ECMA與ISO標準規範。
abstract:應用於抽象類中,與override連用
注意:抽象類使用方法:1.不能創建抽象類的實例(其中的類不允許給出實現);
                                           2.不能在抽象類外聲明抽象方法;
                                           3.不能被聲明爲封裝。
     抽象類中未必有抽象方法,抽象方法必須存在於抽象類中
as:as 用於在兼容的引用類型之間執行轉換,類似於強制轉換,所不同的是,當轉換失敗時,運算符將產生空,而不是引發異常
注意:as 運算符只執行引用轉換和裝箱轉換。as 運算符無法執行其他轉換,如用戶定義的轉換
base:base 關鍵字用於從派生類中訪問基類的成員:
(1)調用基類上已被其他方法重寫的方法。(2)指定創建派生類實例時應調用的基類構造函數。
注意:1.基類訪問只能在構造函數、實例方法或實例屬性訪問器中進行。
2.從靜態方法中使用 base 關鍵字是錯誤的。
bool:
布爾類型(truefalse),佔一個字節
break:1.用於循環結構中,以結束整個循環;
      breakcontinue的區別:break是結束整個循環,而continue只是跳出此次的循環,即刻進行下一個循環
      2.用於switch…case條件結構中
byte:字符型,8位整數(無符號),佔一個字節
case:應用於switch…case語句中
注意:case後面若爲‘3’或3,則應取決於switch後面的數據類型,若爲字符,則是‘3’,若是整型,則爲3
catch:用於捕獲程序中的異常,與try連用
char:字符型,佔兩個字節
checked:checked操作符用於整型算術運算時控制當前環境中的溢出檢查
class:用於聲明一個類(類命名與變量的命名規則比較省)
const:用於創建常量,並且立刻指定其初始值,常量必須聲明其類型,且常量的值一旦被指定便無法更改
continue:應用於while循環中,跳出此次循環,即可進行下一個while循環(與break區別略)
decimal:一種相當精確的帶小數點數的表示形式
default: default 關鍵字可在 switch 語句或泛型代碼中使用。
(1)switch 語句:指定默認標籤;(2)泛型代碼:指定類型參數的默認值。這對於引用類型爲 null,對於值類型爲零。
delegate:應用於代理中
附:代理的分類:(1)單播代理:一次僅調用一個方法;(2)多播代理:一次可同時調用多個方法,要求所有代理的返回值都相同且爲void
do:應用於do…while循環中
注意:while循環與do…while循環的區別:do…while語句在每次循環執行完畢之後作條件值判斷,而while語句則是在每一次循環執行前作判斷,所以do…while循環當中的程序區塊至少執行一次
double:雙精度浮點數,佔八個字節
else:用於if…else條件語句中
enum:聲明枚舉類型
注意:每個枚舉元素代表的數值在缺省的情況下第一個元素的值從0開始,然後依次增加1;而若你將第二個數賦值爲5,則第一個數爲4,第三個數爲6,依此類推
event:聲明一個全新的事件
explicit:explicit 關鍵字用於聲明必須使用強制轉換來調用的用戶定義的類型轉換運算符
extern: extern 修飾符用於聲明在外部實現的方法。extern 修飾符的常見用法是在使用 Interop服務調入非託管代碼時與 DllImport屬性一起使用。在這種情況下,還必須將方法聲明爲 static
false:布爾類型,佔一個字節
finally:用於在程序中,無論異常是否被拋出,都要執行的一個給定的語句集,try塊後面finally不是必需的
fixed:fixed語句禁止垃圾回收器重定位可移動的變量。fixed語句只能出現在不安全的上下文中。fixed還可用於創建固定大小的緩衝區。fixed語句設置指向託管變量的指針,並在執行該語句期間固定此變量。如果沒有fixed語句,則指向可移動託管變量的指針的作用很小,因爲垃圾回收可能不可預知地重定位變量。C#編譯器只允許在fixed語句中分配指向託管變量的指針。可以用數組或字符串的地址初始化指針,只要指針的類型相同,就可以初始化多個指針執行完語句中的代碼後,任何固定變量都被解除固定並受垃圾回收的制約。因此,不要指向fixed語句之外的那些變量。無法修改在fixed語句中初始化的指針。
float:浮點型,佔四個字節
for:for循環
注意:for後三部分:循環的開始數值,循環執行的條件,每次變量值改變的方式
foreach:專門用來讀取集合中的所有元素,將數組中的元素逐一取出,並且輸出到控制檯
注意:1.借用foreach的語法,只能一一取得數組中的元素,沒有辦法利用這種語句改變數組中所存儲的元素
           2.使用語句時,類型必須與所要操作的數組相同
get:取得數組中的元素
goto:用於switch…case語句中,以從一個case跳到另一個case,慎用
if:用於if…else條件結構中,
if…else關鍵字以後的語句若是超過一行,則必須用大括號圍起來,否則可省略大括號
implicit: implicit關鍵字用於聲明隱式的用戶定義類型轉換運算符。如果可以確保轉換過程不會造成數據丟失,則可使用該關鍵字在用戶定義類型和其他類型之間進行隱式轉換。
in: in 上下文關鍵字可在下面兩種上下文中使用:
(1)foreach 語句 ;(2)查詢表達式中的join 子句
int:整型,32位整數(有符號),佔四個字節
interface:用於聲明接口
注意:1.接口在實現時不需要加override
      2.類和接口最大的區別:類不可以多重繼承,而接口可以多重繼承
      3.一個類可以實現多個接口,但不可以有多個基類
      4.接口限制:(1)不允許在接口中包含任何字段,包括static
2)不允許在接口中包含任何構造函數
3)類的缺省訪問區分符爲internal,在類中默認爲private,在接口中默認爲public
4)不允許在接口中嵌套任何類型
5)不允許從classstruct中繼承一個接口
6)接口可以聲明方法,函數,屬性,不能在接口中聲明變量
internal:訪問區分符,使得類能夠向其他函數和對象展示其成員變量和成員函數。任何聲明爲internal的成員可以從定義了該成員的應用程序定義的類或方法訪問它。類的缺省訪問區分符爲internal
is:is檢查對象是否與給定類型兼容。如果所提供的表達式非空,並且所提供的對象可以強制轉換爲所提供的類型而不會導致引發異常,則is表達式的計算結果將是 true; 否則爲false. 如果已知表達式將始終是 true 或始終是 false,則 is關鍵字將導致編譯時警告,但是,通常在運行時才計算類型兼容性。
注意:(1)is 運算符只考慮引用轉換、裝箱轉換和取消裝箱轉換。不考慮其他轉換,如用戶定義的轉換。
(2)不能重載 is 運算符。
(3)在 is 運算符的左側不允許使用匿名方法。lambda 表達式屬於例外。
lock: lock關鍵字可確保當一個線程位於代碼的臨界區時,另一個線程不會進入該臨界區。如果其他線程試圖進入鎖定的代碼,則它將一直等待(即被阻止),直到該對象被釋放。
注意:1.lock 關鍵字在塊的開始處調用 Enter,而在塊的結尾處調用 Exit
2.通常,應避免鎖定 public 類型,否則實例將超出代碼的控制範圍。 常見的結構 lock(this)lock (typeof(MyType))lock("myLock") 違反此準則:(1)如果實例可以被公共訪問,將出現lock(this) 問題。(2)如果MyType可以被公共訪問,將出現lock (typeof(MyType)) 問題。(3)由於進程中使用同一字符串的任何其他代碼都將共享同一個鎖,所以出現lock(“myLock”)問題。 最佳做法是定義 private 對象來鎖定, 或 private static對象變量來保護所有實例所共有的數據。
long:長整型,64位整數(無符號),佔八個字節
namespace:命名空間
new: 在 C# 中,new 關鍵字可用作運算符、修飾符或約束。(1)new 運算符 :用於創建對象和調用構造函數。(2)new 修飾符 :用於向基類成員隱藏繼承成員。(3)new 約束 :用於在泛型聲明中約束可能用作類型參數的參數的類型。
null:null 關鍵字是表示不引用任何對象的 null 引用的文字值。null 是引用類型變量的默認值。普通值類型不能爲null。
object:object類提供了所有類共同的基本屬性,方法和行爲
operator: 使用 operator 關鍵字來重載內置運算符,或提供類或結構聲明中的用戶定義轉換。
注意:帶要被重載的操作符的operator關鍵字被用作函數名稱
out:聲明輸出參數,利用引用來傳遞,不要求在調用方法前對被傳遞的參數初始化
注意:若要使用 out 參數,方法定義和調用方法都必須顯式使用 out 關鍵字。
override:abstract(抽象類)或virtual(虛函數)連用,不與interface(接口)連用
params: params 關鍵字可以指定在參數數目可變處採用參數的方法參數
注意:在方法聲明中的 params 關鍵字之後不允許任何其他參數,並且在方法聲明中只允許一個 params 關鍵字。
partial:分部類型定義允許將類、結構或接口的定義拆分到多個文件中。
private:訪問區分符,,private訪問區分符能夠隱藏其成員變量和成員函數,是其他類對象和函數不能訪問它們,在類之外不能看到類的專用成員,僅該類的函數才能訪問它們,即使類的實力也不能訪問其專用成員
protected:訪問區分符,能夠隱藏其成員變量和成員函數,從而其他的類對象和函數(出了其子類)不能訪問它們
public:訪問區分符,使類能夠向其他函數和對象顯示其成員變量和成員函數,可以從類的外部訪問它
publicprivateprotectedinternal的區別()
readonly: readonly 關鍵字是可以在字段上使用的修飾符。當字段聲明包括 readonly修飾符時,該聲明引入的字段賦值只能作爲聲明的一部分出現,或者出現在同一類的構造函數中。
ref:聲明引用參數,當使用ref參數向方法傳遞參數時,編譯器就將實際值在內存的地址傳遞給方法,因此,如果被調用的方法修改這些值,然後返回,那麼調用代碼的變量將被修改
注意:1.refout的區別:ref要求在調用方法之前對被傳遞的參數初始化,out則不要求;
2.通過值傳遞和通過引用傳遞的區別:當一個參數以傳值的方式傳遞(值傳遞)時,變量的值即使在方法中被改變,它本身還是維持一開始傳入的值,而以傳址方式(引用傳遞)傳入的變量,當方法將其值改變時,此變量的值便永遠的更改;C#默認以傳值的方式傳遞參數。
      3.若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。
return:return語句執行一個迅速返回到調用方的方法,如果沒有return語句,默認情況下,當到達方法中最後一條語句後執行程序才返回到調用方。如果方法爲void,則可以省略return語句
sbyte:8位整數(有符號),佔一個字節
sealed:聲明封裝類
注意:1.封裝類不能被派生;
2.封裝類不能用作基類也不能是抽象類;
3.方法被封裝後不能被重構。
set:set訪問器,set用於設定數組中的元素值(與屬性相同,set會接受外部傳入的值,並自動以名稱爲value的變量存儲這個值),-
short:短整型,16位整數(無符號),佔兩個字節
sizeof:用來顯示不同數據類型的大小,關鍵字sizeof有時會直接訪問內存,慎用
注意:不能重載sizeof運算符
stackalloc: stackalloc 關鍵字用於不安全的代碼上下文中,以便在堆棧上分配內存塊。
static:聲明靜態變量或靜態函數
注意:1.靜態變量可以在成員函數或類定義之外初始化,創建多個對象不會重新初始化靜態變量;
      2.對於類的所有對象,內存中僅存在一份靜態變量的副本,所有對象共享內存中該靜態變量的一份副本;
      3.非靜態函數在調用前必須創建對象,有對象來調用函數;靜態函數由類來調用,不需創建對象;
      4.靜態函數可以訪問靜態變量,非靜態函數可以訪問靜態變量,非靜態函數可以訪問非靜態變量,而靜態函數不可以訪問非靜態變量。
string:字符串,不限長度
struct:聲明一個結構
注意:結構與類的區別:1.結構是值類型的數據類型,類是引用類型;
     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章