比較各種語言的關鍵字
本主題列出可用語言關鍵字做摘要的一般程式工作。 如需有關需要程式碼範例之工作的詳細資訊,請參閱比較各種語言的程式設計概念,含程式碼範例。
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
宣告變數 |
靜態1 |
宣告子 (這是觀念,而非關鍵字) |
宣告子 (包括使用者定義型別與內建型別的關鍵字) |
|
宣告具名常數 |
||||
建立類別的新執行個體 |
new |
|||
建立新的物件 |
COM 物件的 CreateObject |
CoCreateInstance() (COM 物件專用) |
new |
|
設定物件變數的物件 |
= |
= |
<- |
|
函式或方法不會傳回值 |
Sub2 |
|||
多載一個函式或方法 (Visual Basic:多載一個程序或方法) |
(此用途不需要語言關鍵字) |
(此用途不需要語言關鍵字) |
||
參考目前物件 |
Me3 |
|||
對目前物件的虛擬方法進行一個非虛擬呼叫 |
MyClass::Func1(),其中 MyClass 是包含成員函式 Func1 的 C++ 類別。 |
不適用 |
不適用 |
|
從字串擷取字元 |
GetChar或 str(10) 的 str 是字串的位置。 |
*(p + 10) 或 p[10],其中 p 是 char* 或 wchar_t* |
str[10],其中 str 是字串 |
str.Chars(10),其中 str 是字串 |
宣告一個複合資料型別 (結構) |
||||
初始化一個物件 (建構函式) |
建構函式 (這是觀念,而非關鍵字) |
建構函式或系統預設型別建構函式 |
||
直接終止一個物件 |
不適用 |
~ClassName |
不適用 |
不適用 |
在記憶體回收並重新宣告一個 object5 之前,由系統呼叫的方法 |
Finalize (在 Visual Basic 6.0 中為 Class_Terminate) |
解構函式 (C++) (這是觀念,而非關鍵字) |
||
確保 Unmanaged 資源在使用後會加以處置 |
不適用 |
|||
初始化所宣告的變數 |
Dim x As Long = 5 Dim c As New Car(FuelTypeEnum.Gas) |
// 初始化一個值: int x=5; //配合適當的建構函式: C c(10); |
// 初始化一個值: int x = 123; // 或使用預設建構函式: int x = new int(); |
let x = 123 |
使用函式的位址 |
AddressOf (本運算子會以委派執行個體的形式傳回函式的參考) |
|||
回呼 |
將一個函式的位址傳遞至另一個回呼啟動程式的函式。 如需範例,請參閱HOW TO:在 Visual Basic 中將程序傳遞至其他程序。 |
CALLBACK (標準型別) callback (IDL 屬性) |
不適用 |
|
宣告一個可以非同步修改的物件 |
不適用 |
不適用 |
||
強制變數的明確宣告 |
不適用 (所有必須宣告變數前使用) |
不適用 (所有必須宣告變數前使用) |
不適用 (所有必須宣告變數前使用) |
|
啟用區域型別推斷 |
型別推斷會自動啟用 |
|||
測試一個不參考物件的物件變數 |
pobj == NULL |
obj == null |
在比對運算式中使用選項類型 |
|
一個不參考物件之物件變數的值 |
nullptr |
|||
測試一個資料庫 Null 運算式 |
不適用 |
不適用 |
不適用 |
|
測試 Variant 變數是否已初始化 |
不適用 |
不適用 |
不適用 |
不適用 |
定義預設屬性 |
property:property關鍵字來參考 Managed 程式碼 |
物件導向程式
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
參考一個基底類別 |
||||
宣告一個介面 |
||||
指定一個要實作的介面 |
(從介面導出) class C1 : public I1 |
class C1 : I1 介面 |
||
宣告一個類別 |
||||
宣告一個模組 |
static class |
static class |
||
宣告類別或結構的部分定義 |
不適用 |
沒有直接的對等用法。 請參閱 型別擴充 (F#)。 |
||
指定一個只能被繼承的類別, 無法建立類別的執行個體 |
||||
指定一個不能被繼承的類別 |
||||
宣告一個列舉型別 |
||||
宣告一個類別常數 |
const (套用到欄位宣告) |
根據預設,值是不可變動的 (常數)。 請參閱 值 (F#)。 |
||
從基底類別衍生一個類別 |
Class C1 : public Base (此用途不需要語言關鍵字) |
class C1 : C2 |
||
覆寫方法或屬性 (Property) |
||||
宣告一個在衍生類別時必須實作的方法 |
將 = 0 放在宣告的結尾 (純虛擬方法) |
|||
宣告一個無法覆寫的方法 |
NotOverridable (預設的方法為 NotOverridable)。 |
使用 Sealed 屬性 |
||
宣告虛擬的方法或屬性,或是屬性存取子 |
abstract,如方法中所述 |
|||
在衍生類別中隱藏基底類別成員 |
不允許隱藏虛擬或抽象方法 |
|||
宣告一個型別安全參考給類別方法 |
myObj.myFunction,其中 myObj 為物件,myMethod 為該物件上的可用方法 |
|||
指定一個包含您要處理其事件之物件的變數 |
不適用 |
(寫入程式碼 - 沒有特定關鍵字) |
不適用 |
|
指定一個要呼叫其事件程序的事件 |
Handles (命名程序仍然可將事件程序與 WithEvents 變數關聯) |
不適用 |
event += eventHandler; |
不適用 |
評估物件運算式一次,以便存取多個成員 |
不適用 |
不適用 |
不適用 |
例外狀況處理
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
例外狀況處理 |
結構化例外狀況處理:__try, __except C++ 例外狀況處理: CLR 例外狀況處理: |
決策結構
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
決策結構 (選擇) |
||||
決策結構 (if ... 然後) |
||||
迴圈結構 (條件式) |
||||
迴圈結構 (反覆項目) |
陣列
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
宣告陣列 |
int[] x = new int[5]; |
let x = [| 1; 2; 3; 4; 5 |] |
||
初始化陣列 |
let x = [| 1; 2; 3; 4; 5 |] |
|||
重新配置陣列 |
不適用 |
不適用 |
不適用 |
類別範圍
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
在專案或組件之外式可見的 |
||||
只顯示在已宣告的組件內 |
||||
只有在目前或衍生類別中可見 |
不適用 |
不適用 |
||
存取只限於目前的組件或衍生自包含類別的型別 |
protected internal |
不適用 |
||
只有在專案中可見 (對於巢狀類別而言,則是在封入類別) |
成員範圍
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
在類別、專案和模組之外可存取 |
||||
在類別外以及專案或封包中可存取 |
public private |
|||
只有目前和衍生類別可存取 |
不適用 |
|||
只有在類別或模組中可存取 |
||||
指定能存取宣告類別之 Private 成員的函式或其他類別 |
不適用 |
不適用 |
不適用 |
|
在組件和私用之內對組件進行保護 |
不適用 |
protected private |
不適用 |
不適用 |
存取只限於目前的組件或衍生自包含類別的型別 |
protected internal |
不適用 |
其他存留期
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
保留程序的區域變數 |
靜態7 |
不適用 |
||
讓類別的執行個體共用 |
其他
用途 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
註解程式碼 |
//, (* *) 多行註解 |
|||
是否區分大小寫? |
否 |
是 |
是 |
是 |
呼叫 Windows API |
不適用 |
使用平台叫用。 請參閱 外部函式 (F#)。 |
||
宣告並引發一個事件 |
不適用 |
|||
基本執行緒 |
不適用 |
|||
到 (分支) |
不適用 |
1 在 Visual Basic 中,唯一可以用 Static 本身來宣告變數 (例如 Static x As Long) 的地方,是在程序之內。
2 在 Visual Basic 中,以 Sub 關鍵字宣告的程序不能傳回值。 如果要程序傳回值,您必須使用 Function 關鍵字來宣告。
3 在 Visual Basic 中,Me 不會在編譯時期解析,因此您可以將它當做屬性或方法的傳回值使用。
4 在 Visual Basic 中,衍生自 .NET Framework System.Object 之類別的建構函式永遠都會稱為 New。
5 一般來說,以這種方式撰寫的程式碼,將釋放記憶體回收行程不會自動釋放的系統資源。
6 在 C++ 中,抽象類別至少包括一個純虛擬成員。
7 在 Visual Basic 中,非共用類別方法的靜態區域變數會儲存在每個類別執行個體中,而非與其他語言一樣共用單一複本。 當 Static 是用來宣告變數時,即使變數遺失並重新取得範圍後,仍會保留變數的值。