各言語のキーワードの比較

ここでは、言語のキーワードにまとめることができる共通のプログラミング タスクを示します。コード例の必要なタスクの詳細については、「コード例による各言語のプログラミング概念の比較」を参照してください。

目的

Visual Basic

C++

C#

F#

変数の宣言

Dim

Public

Friend

Protected

Private

Shared

Static1

宣言子 (概念であり、キーワードではありません)

declarators (ユーザー定義型と組み込み型を含むキーワード)

let バインディング

価値

名前付き定数の宣言

Const

const

const

readonly

let バインディング

価値

クラスの新規インスタンスの作成

New

new

ref new、gcnew (C++ コンポーネント拡張)

new

new

新規オブジェクトの作成

New

CreateObject (COM オブジェクトの場合)

CoCreateInstance() (COM オブジェクトの場合)

new 

new

オブジェクト変数へのオブジェクト割り当て

=

=

=

<-

関数またはメソッド (値を返さない)

Sub2

void

void

Unit 型

関数またはメソッドのオーバーロード (Visual Basic : プロシージャまたはメソッドのオーバーロード)

Overloads

(言語のキーワードは必要ありません。)

(言語のキーワードは必要ありません。)

override

現在のオブジェクトへの参照

Me3

this

this

メソッド」または「メンバー」で説明されている自己識別子を使用します。

現在のオブジェクトにおける仮想メソッドの非仮想呼び出し

MyClass

MyClass::Func1()、ここで MyClass はメンバー関数 Func1 を持つ C++ クラス

該当なし

該当なし

文字列からの文字の取得

str が文字列です。GetChar、または str(10)

*(p + 10) または p[10]、ここで p は char* または wchar_t*

str[10]、ここで str は文字列

string

str.Chars(10)、ここで str は文字列

Strings

複合データ型の宣言 (構造体)

Structure

Class

インターフェイス

class

struct

union

__interface

struct

class

インターフェイス

Classes

オブジェクトの初期化 (コンストラクター)

Sub New()4

コンストラクター (キーワードではなく概念)

コンストラクター、またはシステム既定のタイプのコンストラクター

クラス コンストラクター

コンストラクター

オブジェクトの直接終了

該当なし

~ClassName

該当なし

該当なし

ガベージ コレクションがオブジェクトをクリアする直前の、システムによるメソッドの呼び出し 5

Finalize (Visual Basic 6.0 では、Class_Terminate)

デストラクター (C++) (キーワードではなく概念)

Destructors

Finalize

使用後のアンマネージ リソース破棄の保証

Using

該当なし

使用

リソース管理

変数の宣言時の初期化

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 (この演算子はデリゲート インスタンスとして関数への参照を返します)

delegate (C++ コンポーネント拡張)

delegate

関数

コールバック

呼び出し元をコールバックする関数に、関数のアドレスを渡します。例については、「方法 : Visual Basic でプロシージャを別のプロシージャに渡す」を参照してください。

CALLBACK (標準データ型)

callback (IDL 属性)

delegate

該当なし

オブジェクトが非同期で修正できることの宣言

該当なし

volatile

volatile

該当なし

変数の明示的な宣言の強制

Option Explicit

該当なし (すべての変数は使用前に宣言する必要あり)

該当なし (すべての変数は使用前に宣言する必要あり)

該当なし (すべての変数は使用前に宣言する必要あり)

ローカル型の推論の有効化

Option Infer

型の推論が自動的に有効になります

オブジェクトを参照していないオブジェクト変数のテスト

obj Is Nothing

pobj == NULL

obj == null

match 式ではオプション型を使用

オプション

match 式

オブジェクトを参照していないオブジェクト変数の値

Nothing

nullptr

null

null 値

データベースの Null 式のテスト

IsDBNull

該当なし

該当なし

該当なし

バリアント変数が初期化されたかどうかのテスト

該当なし

該当なし

該当なし

該当なし

既定のプロパティの定義

既定値

property:property"のキーワードは、マネージ コードを示します

インデクサー

インデックス付きプロパティ

オブジェクト指向プログラミング

目的

Visual Basic

C++

C#

F#

基本クラスの参照

MyBase

__super

base

base

インターフェイスの宣言

インターフェイス

__interface

インターフェイス クラス (C++ コンポーネント拡張)

インターフェイス

インターフェイス

実装されるインターフェイスの指定

Implements

(インターフェイスより派生)

class C1 : public I1

class C1 : I1

インターフェイス

インターフェイス

クラスの宣言

Class

class

クラスと構造体 (C++ コンポーネント拡張)

class

type

モジュールの宣言

Module

static class

static class

module

クラスまたは構造体の部分定義

Partial

該当なし

Partial

直接対応する項目はありません。「型拡張 (F#)」を参照してください。

クラスが継承だけできることの指定。クラスのインスタンスは作成できない。

MustInherit

abstract (C++ コンポーネント拡張)6

abstract

抽象クラス

クラスが継承できないことの指定

NotInheritable

sealed (C++ コンポーネント拡張)

sealed

SealedAttribute

列挙型の宣言

Enum

enum

enum

type

クラス定数の宣言

Const

const

const (フィールド宣言に適用)

既定では、どちらの値も変更不可 (定数) です。「値 (F#)」を参照してください。

基本クラスからのクラスの派生

Class C1 Inherits C2

Class C1 : public Base (言語のキーワードは必要ありません。)

class C1 : C2

class

inherit

メソッドやプロパティのオーバーライド

[オーバーライド]

(/clr コンパイルの override (C++ コンポーネント拡張) を除き、言語のキーワードは必要ありません。派生クラス を参照してください。)

override

override

派生クラスに実装しなければならないメソッドの宣言

MustOverride

宣言の最後に = 0 を置く (純粋仮想メソッド)

abstract

abstract

オーバーライドできないメソッドの宣言

NotOverridable (メソッドは既定で NotOverridable)

sealed (C++ コンポーネント拡張)

sealed

Sealed 属性を使用

仮想メソッド/プロパティ、またはプロパティ アクセサーの宣言

Overridable

virtual

virtual

Methods」で説明されている abstract

派生クラスにおける基本クラスのメンバーの隠ぺい

Shadowing

new (vtable の新しいスロット) (C++ コンポーネント拡張)

new

仮想メソッドまたは抽象メソッドの隠ぺいは許可されていません

クラス メソッドへのタイプセーフな参照の宣言

Delegate

delegate (C++ コンポーネント拡張)

delegate

myObj.myFunction。myObj はオブジェクトで、myMethod はそのオブジェクトに対して使用可能なメソッド

処理するイベントを持つオブジェクトを含むことができる変数の指定

WithEvents

該当なし

(コードを記述。固有のキーワードはなし)

該当なし

イベント プロシージャが呼び出されるイベントの指定

Handles (名前付けパターンにより、WithEvents 変数とイベントのプロシージャを関連付けることもできます。)

該当なし

event += eventHandler;

該当なし

複数メンバーがアクセスするためのオブジェクト式の評価

With...End With

該当なし

該当なし

該当なし

例外処理

目的

Visual Basic

C++

C#

F#

例外処理

Try...Catch...Finally...End Try

Throw

構造化例外処理: __try, __except

__finally

C++ 例外処理:

try、catch、throw

CLR 例外処理:

例外処理 (C++ コンポーネント拡張)

try、catch、finally

throw

try

with

finally

条件判断構造

目的

Visual Basic

C++

C#

F#

条件判断構造 (選択)

選択...Case...End Select

switch、case、default

goto

break

switch、case

既定

goto

break

match 式

条件判断構造 (if ...then)

If...Then...Else...End If

ElseIf

if、else

if、else

if...then...else

ループ構造 (条件)

While...End While

Do...Loop

do、while

continue

do

while

continue

while...do

ループ構造 (反復)

For...Next

For Each...Next

for

for

foreach

for...to

for...in

配列

目的

Visual Basic

C++

C#

F#

配列の宣言

Dim a() As Long

int x[5];

int[] x = new int[5];

let x = [| 1; 2; 3; 4; 5 |]

配列

配列の初期化

Dim a() As Long = {3, 4, 5}

int x[5]= {1,2,3,4,5};

int[] x = new int[5] {1, 2, 3, 4, 5};

let x = [| 1; 2; 3; 4; 5 |]

配列

配列の再割り当て

Redim

該当なし

該当なし

該当なし

クラス スコープ

目的

Visual Basic

C++

C#

F#

プロジェクトやアセンブリの外部からの参照

Public

public

public

public

宣言元のアセンブリ内でのみアクセス可能

Friend

private

internal

internal

現在のクラスまたは派生クラスでのみ参照

Protected

該当なし

Protected

該当なし

現在のアセンブリ、またはコンテナー クラスから派生した型に制限されるアクセス

Protected Friend

型およびメンバーの表示

protected internal

アクセシビリティ レベル

該当なし

プロジェクト内部だけで参照 (入れ子になった外側のクラス内のクラス)

Private

private

private

private

メンバー スコープ

目的

Visual Basic

C++

C#

F#

クラス、プロジェクト、およびモジュールの外部からアクセス可能

Public

public

public

public

クラスの外部 (ただし、プロジェクトまたはパッケージ内) からアクセス可能

Friend

public private

internal

internal

現在のクラスおよび派生クラスからのみアクセス可能

Protected

protected

protected

該当なし

クラスまたはモジュール内でのみアクセス可能

Private

private

private

private

関数またはほかのクラスが派生クラスのプライベート メンバーへアクセスできることの指定

該当なし

friend

該当なし

該当なし

アセンブリ内部ではプロテクト、ほかのアセンブリにはプライベート

該当なし

protected private

該当なし

該当なし

現在のアセンブリ、またはコンテナー クラスから派生した型のみアクセス可能

Protected Friend

型およびメンバーの表示

protected internal

アクセシビリティ レベル

該当なし

変数の有効期間

目的

Visual Basic

C++

C#

F#

プロシージャのローカル変数として予約

Static7

static

static

該当なし

クラスの全インスタンスで共有

Shared

static

static

static

[その他]

目的

Visual Basic

C++

C#

F#

コメント コード

'

Rem

//、複数行にわたるコメントの場合は /* */

//、複数行にわたるコメントの場合は /* */

XML コメントの場合は ///

//、複数行にわたるコメントの場合は (* *)

大文字と小文字の区別

Windows API の呼び出し

Declare <API>

該当なし

プラットフォーム呼び出しを使用

プラットフォーム呼び出しを使用。

外部関数 (F#)」を参照してください。

イベントの宣言と発生

Event

RaiseEvent

該当なし

イベント

イベント

プリミティブのスレッド処理

SyncLock

該当なし

lock

lock

Go to (分岐)

Goto

goto

goto

該当なし

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 を変数の宣言に使用したとき、変数が解放されてから再度スコープを入手しても、その変数の値は予約されています。

参照

関連項目

コード例による各言語のプログラミング概念の比較

各言語の演算子の比較

各言語のデータ型の比較

各言語およびライブラリにおける、コントロールとプログラミング可能オブジェクトの比較

その他の技術情報

各言語の比較