下の表では、VB.NETとC#とで同じ役割を果たしているであろうものをそれぞれを対応させて紹介しています。見やすくするため、分類のようなことをしていますが、これはかなりいい加減です。説明のほとんどはVB.NETの方のMSDNでの説明をのせています。
Visual Basic、Visual J#、C++、C#、JScript、F#の比較は、ヘルプの「各言語の比較」が参考になります。
VB.NET | C# | 説明(ほとんどの場合VB.NETのMSDNより) |
---|---|---|
アクセス修飾子 | ||
Public | public | 宣言する 1 つ以上のプログラミング要素にパブリック アクセスを設定するキーワードです。パブリック アクセスを指定した要素のアクセシビリティには制約はありません。 |
Protected | protected | 宣言する 1 つ以上のプログラミング要素にプロテクト アクセスを設定するキーワードです。プロテクト アクセスを指定した要素には、そのクラス自体または派生クラスからだけアクセスできます。プロテクト アクセスはフレンド アクセスのスーパーセットではありません。 |
Friend | internal | 宣言する 1 つ以上のプログラミング要素にフレンド アクセスを設定するキーワードです。フレンド アクセスを指定した要素には、その宣言が含まれているプログラム、および同じアセンブリ内のその他の場所からアクセスできます。 |
Protected Friend | protected internal | 宣言される要素にはフレンド アクセスとプロテクト アクセスの両方が設定され、同じアセンブリ、要素自体のクラス、およびすべての派生クラスから要素にアクセスできます。 |
Private | private | 宣言する 1 つ以上のプログラミング要素にプライベート アクセスを設定するキーワードです。プライベート要素には、宣言コンテキストの中からだけアクセスできます。入れ子になったプロシージャの内部や入れ子になった列挙体の代入式の内部など、入れ子になった型のメンバからもアクセスできます。 |
修飾子 | ||
Shared | static | 宣言する 1 つ以上のプログラミング要素が共有されることを示すキーワードです。共有されている要素は、クラスや構造体の特定のインスタンスに関連付けられていません。共有されている要素にアクセスするには、クラス名や構造体名、またはクラスや構造体の特定のインスタンスの変数名を使用して修飾します。 |
Overridable | virtual | プロパティやメソッドを派生クラスでオーバーライドできることを示すキーワードです。 |
Overrides | override | プロパティやメソッドが基本クラスから継承したメンバをオーバーライドすることを示すキーワードです。 |
MustOverride | abstract | 派生クラスでオーバーライドしないと使用できない基本クラスのプロパティやプロシージャを示すキーワードです。 |
MustInherit | abstract | インスタンス化できず、基本クラスとしてだけ使用できるクラスを示すキーワードです。 |
NotOverridable | sealed | 派生クラスでオーバーライドできないプロパティまたはプロシージャを示すキーワードです。 |
NotInheritable | sealed | 基本クラスとして使用できないクラスを示すキーワードです。 |
Overloads | (指定する必要なし) | 名前は既存のメンバと同じでも、引数リストが元のメンバとは異なるプロパティやメソッドを宣言するキーワードです。 |
Shadows | new | 宣言したプログラミング要素が、基本クラスで同じ名前を持つ要素、またはオーバーロードされた要素のセットをシャドウすることを示すキーワードです。宣言された要素は、ほかの任意の種類の要素でシャドウできます。シャドウされた要素は、その要素をシャドウする派生クラスでは使用できません。 |
ByRef | ref(呼び出し側で明示的に代入が必要) out(呼び出される側で代入が必要) | 引数を渡す方法としてキーワード ByRef を指定すると、呼び出されたプロシージャは、呼び出しコードの引数の基になる変数の値を変更できます。 |
クラス | ||
New | (クラスと同じ名前) | クラスのコンストラクタ |
Finalize | ~(クラスと同じ名前) | クラスのデストラクタ |
Inherits | class DerivedClass: BaseClass | 現在のクラスまたはインターフェイスの属性、フィールド、プロパティ、メソッド、およびイベントを別のクラスまたはインターフェイスから継承します。 |
Implements | class DerivedClass: BaseInterface | インターフェイスが出現するクラスまたは構造体の定義に実装される、複数のインターフェイス、またはインターフェイス メンバを指定します。 |
演算子 | ||
GetType() | typeof() | 指定された型の型オブジェクトを返します。 |
Ctype | () | キャスト |
式 | ||
Me | this | 実行される型のインスタンスを保持する変数への参照 (値型の場合) か、または実行される型のインスタンスへの直接参照 (参照型の場合) です。 |
MyBase | base | クラスの現在のインスタンスの基本クラスを参照するオブジェクト変数と同じように動作するキーワードです。 |
ステートメント | ||
Imports | using | 参照先のプロジェクトとアセンブリから名前空間の名前をインポートします。また、ステートメントを使用するファイルと同じプロジェクト内に定義された、名前空間の名前をインポートします。 |
Implements | interface | 現在のクラスまたはインターフェイスの属性、フィールド、プロパティ、メソッド、およびイベントを別のクラスまたはインターフェイスから継承します。 |
Structure | struct | 構造体を宣言してそのメンバの特性を定義するために、モジュール レベルまたはクラス レベルで使用します。 |
Property Get Set Value | get set value | プロパティの値を設定および取得するためのプロパティ プロシージャ、およびプロパティの名前を宣言します。 |
Select Case ~ Case ~ Case Else ~ End Select | switch(~){ case ~ default:~ } | 条件式の値に従って、複数のステートメント ブロックのいずれかを実行させるフロー制御ステートメントです。 |
SyncLock | lock | ステートメントを 1 つの式に同期させることができます。 |
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。