各言語のキーワードの比較
ここでは、言語のキーワードにまとめることができる共通のプログラミング タスクを示します。 コード例の必要なタスクの詳細については、「コード例による各言語のプログラミング概念の比較」を参照してください。
目的 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
変数の宣言 |
宣言子 (概念であり、キーワードではありません) |
declarators (ユーザー定義型と組み込み型を含むキーワード) |
||
名前付き定数の宣言 |
||||
クラスの新規インスタンスの作成 |
new |
|||
新規オブジェクトの作成 |
CreateObject (COM オブジェクトの場合) |
CoCreateInstance() (COM オブジェクトの場合) |
new |
|
オブジェクト変数へのオブジェクト割り当て |
= |
= |
<- |
|
関数またはメソッド (値を返さない) |
Sub2 |
|||
関数またはメソッドのオーバーロード (Visual Basic : プロシージャまたはメソッドのオーバーロード) |
(言語のキーワードは必要ありません。) |
(言語のキーワードは必要ありません。) |
||
現在のオブジェクトへの参照 |
Me3 |
|||
現在のオブジェクトにおける仮想メソッドの非仮想呼び出し |
MyClass::Func1()、ここで MyClass はメンバー関数 Func1 を持つ C++ クラス |
該当なし |
該当なし |
|
文字列からの文字の取得 |
*(p + 10) または p[10]、ここで p は char* または wchar_t* |
str[10]、ここで str は文字列 |
str.Chars(10)、ここで str は文字列 |
|
複合データ型の宣言 (構造体) |
||||
オブジェクトの初期化 (コンストラクター) |
コンストラクター (キーワードではなく概念) |
コンストラクター、またはシステム既定のタイプのコンストラクター |
||
オブジェクトの直接終了 |
該当なし |
~ClassName |
該当なし |
該当なし |
ガベージ コレクションがオブジェクトをクリアする直前の、システムによるメソッドの呼び出し 5 |
Finalize (Visual Basic 6.0 では、Class_Terminate) |
Destructors (C++) (キーワードではなく概念) |
||
使用後のアンマネージ リソース破棄の保証 |
該当なし |
|||
変数の宣言時の初期化 |
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 (この演算子はデリゲート インスタンスとして関数への参照を返します) |
|||
コールバック |
呼び出し元をコールバックする関数に、関数のアドレスを渡します。 例については、「方法 : Visual Basic でプロシージャを別のプロシージャに渡す」を参照してください。 |
CALLBACK (標準データ型) callback (IDL 属性) |
該当なし |
|
オブジェクトが非同期で修正できることの宣言 |
該当なし |
該当なし |
||
変数の明示的な宣言の強制 |
該当なし (すべての変数は使用前に宣言する必要あり) |
該当なし (すべての変数は使用前に宣言する必要あり) |
該当なし (すべての変数は使用前に宣言する必要あり) |
|
ローカル型の推論の有効化 |
型の推論が自動的に有効になります |
|||
オブジェクトを参照していないオブジェクト変数のテスト |
pobj == NULL |
obj == null |
match 式ではオプション型を使用 |
|
オブジェクトを参照していないオブジェクト変数の値 |
nullptr |
|||
データベースの Null 式のテスト |
該当なし |
該当なし |
該当なし |
|
バリアント変数が初期化されたかどうかのテスト |
該当なし |
該当なし |
該当なし |
該当なし |
既定のプロパティの定義 |
property: マネージ コードを参照する property キーワードです。 |
オブジェクト指向プログラミング
目的 |
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 |
||
メソッドやプロパティのオーバーライド |
(/clr コンパイルの override を除き、言語のキーワードは必要ありません。Derived Classes を参照してください。) |
|||
派生クラスに実装しなければならないメソッドの宣言 |
宣言の最後に = 0 を置く (純粋仮想メソッド) |
|||
オーバーライドできないメソッドの宣言 |
NotOverridable (メソッドは既定で NotOverridable) |
Sealed 属性を使用 |
||
仮想メソッド/プロパティ、またはプロパティ アクセサーの宣言 |
「Methods」で説明されている abstract |
|||
派生クラスにおける基本クラスのメンバーの隠ぺい |
仮想メソッドまたは抽象メソッドの隠ぺいは許可されていません |
|||
クラス メソッドへのタイプセーフな参照の宣言 |
myObj.myFunction。myObj はオブジェクトで、myMethod はそのオブジェクトに対して使用可能なメソッド |
|||
処理するイベントを持つオブジェクトを含むことができる変数の指定 |
該当なし |
(コードを記述。固有のキーワードはなし) |
該当なし |
|
イベント プロシージャが呼び出されるイベントの指定 |
Handles (名前付けパターンにより、WithEvents 変数とイベントのプロシージャを関連付けることもできます。) |
該当なし |
event += eventHandler; |
該当なし |
複数メンバーがアクセスするためのオブジェクト式の評価 |
該当なし |
該当なし |
該当なし |
例外処理
目的 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
例外処理 |
構造化例外処理: __try, __except C++ 例外処理: CLR 例外処理: |
条件判断構造
目的 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
条件判断構造 (選択) |
||||
条件判断構造 (if ... then) |
||||
ループ構造 (条件) |
||||
ループ構造 (反復処理) |
配列
目的 |
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 |
|||
現在のクラスおよび派生クラスからのみアクセス可能 |
該当なし |
|||
クラスまたはモジュール内でのみアクセス可能 |
||||
関数またはほかのクラスが派生クラスのプライベート メンバーへアクセスできることの指定 |
該当なし |
該当なし |
該当なし |
|
アセンブリ内部ではプロテクト、ほかのアセンブリにはプライベート |
該当なし |
protected private |
該当なし |
該当なし |
現在のアセンブリ、またはコンテナー クラスから派生した型のみアクセス可能 |
protected internal |
該当なし |
変数の有効期間
目的 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
プロシージャのローカル変数として予約 |
該当なし |
|||
クラスの全インスタンスで共有 |
その他
目的 |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
コメント コード |
//、複数行にわたるコメントの場合は (* *) |
|||
大文字と小文字の区別 |
X |
○ |
○ |
○ |
Windows API の呼び出し |
該当なし |
プラットフォーム呼び出しを使用。 「外部関数 (F#)」を参照してください。 |
||
イベントの宣言と発生 |
該当なし |
|||
プリミティブのスレッド処理 |
該当なし |
|||
Go to (分岐) |
該当なし |
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++ では、抽象クラスに 1 つ以上の純粋な仮想メンバーを含めます。
7 非共有のクラス メソッドにおける静的なローカル変数は、Visual Basic ではクラス インスタンスごとに格納され、その他の言語では単一のコピーを共有します。 Static を変数の宣言に使用したとき、変数が解放されてから再度スコープを入手しても、その変数の値は予約されています。
参照
参照
各言語およびライブラリにおける、コントロールとプログラミング可能オブジェクトの比較