• ベストアンサー

VB.NETとC#.NETの違いは何ですか?

VB.NETとC#.NETの違いは何ですか? .NET Frameworkのクラス、メソッド、プロパティ等が分かれば、 VB.NETもC#.NETも大して違いはないと聞きました。 一体どういうことでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 うむ、それに答えるにはまずMicrosoft社の.Net構想を説明せねばなるまいて。  Microsoftは1998年ごろ、C++とJavaを似せておいしい所取りをしたC#という言語と、Javaに似た中間言語(CLI)の構想を打ち出した。  それは、あらゆる言語で書かれたプログラムテキストを同一の構造を持ったプログラムバイナリー(中間言語)に変換(コンパイル)し、実行時にはどんなプログラミング言語を用いていたか関係なく同じように実行できる実行環境を用意するというもので、これをMicrosoft.Netといい、Microsoftが用意した共通ライブラリー&実行環境を.Net Frameworkという。  この、.Net Frameworkなる共通ライブラリー、例えばStringクラスであったり、Windowsの窓を操作するクラスであったり、レガシーVB(VB4~VB6)とぱっと見が似ているVBライブラリーであったり、これらのクラス群をあらゆる言語から使えるように、という構想だ。もちろんコンパイラーは.Net Framework用に作成されたものを使う必要がある。  MicrosoftはC++、C#、Basic(VB)、J#(Java)、F#(Fortranに似た言語)の5言語のコンパイラーを提供しているけど、他の会社やコミュニティーがPascalやpythonに似た言語など、他のプログラミング言語用のコンパイラーを提供し、それらは全て上記で説明した.Net Frameworkのライブラリーを呼び出す事ができる。  C#からMicrosoft.VisualBasicパッケージのライブラリーも呼び出せるので、言語仕様だけがC++言語風で、でもやってる事は100%VBだって言う事もできる。  Microsoft.Net 1.0の頃はBasic言語はルートパッケージを作る事が出来なかった(プロジェクト名がパッケージ名の先頭になり、プロジェクトのプロパティーでパッケージ名を空っぽにする事はできたけど予期しない動作になったりする)など、若干C#が優遇(と言うか前述の通り.Net Frameworkは元々C#言語+中間言語の構想で、Basic言語を相乗りさせた形になる)されている感はあったけど、今ではそんな事もない。  つまり、あらゆる言語で同じプログラムを書くことができる、と言うのがそもそもの.Net Frameowrkの中間言語構想なので、VBとC#で使えるライブラリーが同じなのでVB.NETとC#.NETは文法以外に違う事が無いと言える。それが、質問者が記述した内容そのものだという事なのですよ。

関連するQ&A