ここでは、言語のキーワードにまとめることができる共通のプログラミング タスクを示します。コード例の必要なタスクの詳細については、「コード例による各言語のプログラミング概念の比較」を参照してください。
|
目的
|
Visual Basic
|
Visual J#
|
C++
|
C#
|
JScript
|
Visual FoxPro
|
| 変数の宣言 | Dim ステートメント (Visual Basic) Public (Visual Basic) Friend (Visual Basic) Protected (Visual Basic) Private (Visual Basic) Shared (Visual Basic) Static (Visual Basic) 1 | public protected private static final volatile transient | 宣言子 (概念であり、キーワードではありません) | declarators (ユーザー定義型と組み込み型を含むキーワード) | var | [暗黙の宣言] PUBLIC LOCAL PRIVATE |
| 名前付き定数の宣言 | Const | final | const | const readonly | const | #DEFINE |
| クラスの新規インスタンスの作成 | New | new | new gcnew | new | new | NEWOBJECT( ) 関数 |
| 新規オブジェクトの作成 | CreateObject | | new | CoCreateInstance() (COM オブジェクトの場合) | new | new ActiveXObject() | CREATEOBJECT( ) 関数 |
| オブジェクト変数へのオブジェクト割り当て | = | = | = | = | = | = STORE |
| 関数またはメソッド (値を返さない) | Sub 2 | void | void | void | void | Void (COM サーバーのみ) |
| 関数またはメソッドのオーバーロード (Visual Basic : プロシージャまたはメソッドのオーバーロード) | Overloads | (言語のキーワードは必要ありません。) | (言語のキーワードは必要ありません。) | (言語のキーワードは必要ありません。) | (言語のキーワードは必要ありません。) | (言語のキーワードは必要ありません。) |
| 現在のオブジェクトへの参照 | Me 3 | this | this | this | this | this thisform |
| 現在のオブジェクトにおける仮想メソッドの非仮想呼び出し | MyClass | 適用なし | MyClass::Func1()、ここで MyClass はメンバ関数 Func1 を持つ C++ クラス | 適用なし | 適用なし | 適用なし |
| 文字列からの文字の取得 | str(10)、ここで str は文字列 文字列型 | str[10]、ここで str は文字列 string | *(p + 10) または p[10]、ここで p は char* または wchar_t* | str[10]、ここで str は文字列 string | str[10]、ここで str はstring charAt substring substr | SUBSTR( ) |
| 複合データ型の宣言 (構造体) | Structure | class, interface | class struct union __interface | struct class interface | class, interface | 適用なし |
| オブジェクトの初期化 (コンストラクタ) | Sub New() 5 | コンストラクタ (キーワードではなく概念) | コンストラクタ (キーワードではなく概念) | コンストラクタ、またはシステム既定のタイプのコンストラクタ クラス コンストラクタ | コンストラクタ (キーワードではなく概念)6 | Init イベント |
| オブジェクトの直接終了 | 適用なし | 適用なし | ~ ClassName | 適用なし | 適用なし | 適用なし |
| ガベージ コレクションがオブジェクトをクリアする直前の、システムによるメソッドの呼び出し 7 | Finalize (Visual Basic 6.0 では、Class_Terminate) | finally | destructor | デストラクタ | 適用なし | Destroy イベント |
| 変数の宣言時の初期化 | Dim x As Long = 5 Dim c As New Car(FuelTypeEnum.Gas) | int x = 5; //またはコンストラクタで初期化 C c(10); | int x=5; | // 値の初期化 : int x = 123; // または既定のコンストラクタ : int x = new int(); | var x = 5 var y : car = new car() | LOCAL x x = 5 |
| 関数のアドレスの取得 | AddressOf (この演算子はデリゲート インスタンスとして関数への参照を返します) | delegate multicast /** @delgate */ | delegate | delegate | かっこなしで関数名を使用 | 適用なし |
| コールバック | 呼び出し元をコールバックする関数に、関数のアドレスを渡します。例については、「方法 : Visual Basic でプロシージャを別のプロシージャに渡す」を参照してください。 | 呼び出し元をコールバックする関数に、関数のアドレスを渡します。例については、「コールバック関数の実装」を参照してください。 | CALLBACK (標準データ型) callback (IDL 属性) | delegate | 適用なし | 適用なし |
| オブジェクトが非同期で修正できることの宣言 | 適用なし | volatile | volatile | volatile | 適用なし | 適用なし |
| 変数の明示的な宣言の強制 | [Option Explicit] | n/a (すべての変数は使用前に宣言する必要あり) | n/a (すべての変数は使用前に宣言する必要あり) | n/a (すべての変数は使用前に宣言する必要あり) | 高速モード (既定値) | _VFP.LanguageOptions NEW |
| オブジェクトを参照していないオブジェクト変数のテスト | obj Is Nothing | pObj == null | pobj == NULL | obj == null | obj == undefined obj == null | VARTYPE(obj)=="0" |
| オブジェクトを参照していないオブジェクト変数の値 | Nothing | null | nullptr | null | null undefined | .F. |
| データベースの Null 式のテスト | IsDbNull | System.Data.SqlTypes 名前空間に含まれるさまざまなデータ型によってサポートされます。 | 適用なし | 適用なし | x == null | ISNULL( ) |
| バリアント変数が初期化されたかどうかのテスト | 適用なし | 適用なし | 適用なし | 適用なし | x == undefined | EMPTY( ) |
| 既定のプロパティの定義 | Default | 適用なし | property | インデクサ | 適用なし | 適用なし |
|
目的
|
Visual Basic
|
Visual J#
|
C++
|
C#
|
JScript
|
Visual FoxPro
|
| 構造化例外処理 | Try <試行する処理> Catch <エラー処理> Finally <常に実行> End Try Throw | try catch finally throw | __try、__except __finally | try、catch、finally throw | try catch finally throw | TRY [ tryCommands ] [ CATCH [ To VarName ] [ WHEN IExpression ] ] [ catchCommands ] ] [ THROW [ eUserExpression ] ] [ EXIT ] [ FINALLY [ finallyCommands ] ] ENDTRY |
| C++ 例外処理 | 適用なし | 適用なし | try、catch、throw | 適用なし | 適用なし | 適用なし |
|
目的
|
Visual Basic
|
Visual J#
|
C++
|
C#
|
JScript
|
Visual FoxPro
|
| 条件判断構造
(選択) | Select Case ...、Case、Case Else、End Select | switch case break default | switch、case、default goto break | switch case default goto break | switch case break | CASE ICASE |
| 条件判断構造 (if ... then) | If ...Then、ElseIf ...Then、Else、End If | if else | if、else | if、else | if else | IF ... ENDIF IIF( ) |
| ループ構造 (条件) | While、Do [While、Until] ...、Loop [While、Until] | do while continue | do、while continue | do while continue | do、while break、continue | DO、WHILE (句) |
| ループ構造 (反復処理) | For ...、[Exit For]、Next For Each ...、[Exit For]、Next | for break | for | for foreach | for (x=0;x<10;x++){...} for (prop in obj) { print (obj[prop]);} | FOR (句) FOR ... ENDFOR Continue NEXT FOR EACH (句)、FOR ... ENDFOR、Continue、Next |
|
目的
|
Visual Basic
|
Visual J#
|
C++
|
C#
|
JScript
|
Visual FoxPro
|
| 配列の宣言 | Dim a() As Long | int[] x = new int[5]; | int x[5]; | int[] x = new int[5]; | var x : int[] var arr = Array() | DIMENSION DECLARE |
| 配列の初期化 | Dim a() As Long = {3, 4, 5} | int[] x = {1,2,3,4,5}; | int x[5]= {1,2,3,4,5}; | int[] x = new int[5] {1, 2, 3, 4, 5}; | var x : int[] = [1, 2, 3, 4, 5] var arr = new Array(1, 2, 3, 4, 5)] | x[1] = 1 x[2] = 2 |
| 配列の再割り当て | Redim | 適用なし | 適用なし | 適用なし | arr.length=newSize(JScript の配列のみ)10 | DIMENSION DECLARE |
|
目的
|
Visual Basic
|
Visual J#
|
C++
|
C#
|
JScript
|
Visual FoxPro
|
| クラス、プロジェクト、およびモジュールの外部からアクセス可能 | Public | public | public | public | public | (言語のキーワードは必要ありません。) |
| クラスの外部 (ただし、プロジェクトまたはパッケージ内) からアクセス可能 | Friend | (スコープ キーワードを省略することで "パッケージ スコープ" を指定) | public private: | internal | internal | 適用なし |
| 現在のクラスおよび派生クラスからのみアクセス可能 | Protected | protected | protected | protected | protected | PROTECTED |
| クラスまたはモジュール内でのみアクセス可能 | Private | private | private | private | private | HIDDEN |
| 関数またはほかのクラスが派生クラスのプライベート メンバへアクセスできることの指定 | 適用なし | 適用なし | friend (C++ では使用できません) | friend | 適用なし | 適用なし |
| アセンブリ内部ではプロテクト、ほかのアセンブリにはプライベート | 適用なし | 適用なし | protected private | 適用なし | 適用なし | 適用なし |
| 現在のアセンブリ、またはコンテナ クラスから派生した型のみアクセス可能 | Protected Friend | 適用なし | Type and Member Visibility | protected internal アクセシビリティ レベル | 適用なし | 適用なし |
1 Visual Basic では、Static を変数の宣言として使用できるのは、プロシージャ内部だけです。たとえば、Static x As Long をプロシージャの外部で宣言することはできません。
2 Visual Basic では、Sub キーワードで宣言されたプロシージャは値を返すことができません。プロシージャが値を返すようにするには、Function キーワードで宣言する必要があります。
3 Visual Basic では、Me はコンパイル時に解決されないため、プロパティやメソッドの戻り値として使用できます。
4 JScript では、substr 関数はサポートされていますが、文字列内の文字にアクセスする方法としては、現在は推奨されていません。文字列の特定の位置から文字にアクセスする最も効率的な方法は、角かっこを使うことです。たとえば、文字列 str の 10 番目の文字にアクセスするには、str[10] を使用します。
5 Visual Basic では、.NET Framework System.Object から派生するクラスのコンストラクタは、常に New という名前になります。
6 JScript では、コンストラクタのオーバーロードは使用できません。
7 通常、このようなメソッドのコードは、ガベージ コレクタによって自動的に解放されないシステム リソースを解放します。
8 C++ では、抽象クラスに 1 つ以上の純粋な仮想メンバを含めます。
9 JScript では、Visual Basic と異なり、先行するピリオドは使用されません。変数とプロパティは互いに間違えられることがあるので、この機能は混乱を招きやすいと考えられます。また、with ステートメントを使うとコードの実行速度が低下することにも注意してください。
10 JScript では、これによって配列が再配置されることも、"増加" することもありません。JScript の配列 (Array 型として宣言) は、常に疎であり、また動的です。ネイティブ配列 (System.Array または type[] として宣言) は動的ではありません。
11 非共有のクラス メソッドにおける静的なローカル変数は、Visual Basic ではクラス インスタンスごとに格納され、その他の言語では単一のコピーを共有します。Static を変数の宣言に使用したとき、変数が解放されてから再度スコープを入手しても、その変数の値は予約されています。
関連項目
コード例による各言語のプログラミング概念の比較
各言語の演算子の比較
各言語のデータ型の比較
各言語およびライブラリにおける、コントロールとプログラミング可能オブジェクトの比較
その他の技術情報
各言語の比較