Microsoft Visual Basic .NET
Visual Basic .NET （ヴィジュアル ベーシック ドットネット）はマイクロソフトが開発したプログラミング言語およびその処理系。VB.NETと略されて呼ばれることが多い。.NETに対応していない旧来のMicrosoft Visual Basic（バージョン6.0まで、VB6）の後継である。
なおVisual Studio 2005以降では、「Visual Basic .NET」や「VB.NET」という呼称ではなく、従来のように「Visual Basic」という呼称が用いられるようになっているが、6.0以前との互換性はなく、また.NETベースであることには変わりない。
C++やJava、C#などのC系言語と比較して、VB/VB.NETは文法が自然言語に近いため、が、本格的なソフトウェアの作成にも使用できる。なおVB.NETはマイクロソフトが推進している.NETの一環で開発された言語であり、アプリケーション実行コードは.NET Framework上で動作するほか、言語仕様にオブジェクト指向が本格的に取り入れられるなど、前バージョンのVisual Basic 6.0からの変更点はかなりの数にのぼり、言語仕様の互換性は低い。VB.NETに移行できない旧VB製アプリケーションを救済するため、VB.NETがリリースされた後にリリースされたMicrosoft Windows OSにおいても、旧VBの開発環境や旧VBランタイムのサポートが条件付きで継続されるなどの特別延命措置が図られたりしている。Visual Basic .NETには、従来のVisual Basicからの移行を容易にするアップグレードウィザードや、従来の一部機能を実現する互換ライブラリが実装されている 。
コンパイラはマイクロソフトから無料で提供されているので、Windows付属のメモ帳等を使ってプログラムすることもできるが、専用に開発された統合開発環境を使って開発するのが一般的である。
かつては旧来のVisual Basicと同様、製品は有償でのみ提供されていたが、バージョン2005以降は機能制限版であるExpressエディションが、またバージョン2013以降はProfessionalエディション相当の機能を持ちライセンス制約の強いCommunityエディションがそれぞれ無償で配布されている。
VB.NETではMicrosoft Windows用のアプリケーション開発、Web用のアプリケーション開発、およびモバイル向けのアプリケーション開発などを行なうことができる。利用可能なVisual Studioプロジェクトテンプレートも、Visual C#とほぼ同様である。
旧来のVBはVisual C++と比較してアプリケーションの実行速度性能に問題が発生することもあったが、実行環境を.NET Frameworkに移したVB.NETでは、最終的にコンパイラが出力するコードはVisual C#等と同じMSIL中間コード (Javaのバイトコードに近い) であるため、他の.NET言語と比較して速度面でも遜色ないものとなっている。なお、MSILは実行時に.NETのJITコンパイラにより最適化されたネイティブコードに変換される。
Direct3Dなどのマルチメディアコンポーネントを含むMicrosoft DirectXに関しては、VB.NETおよびVisual C#などの.NET言語からDirectX 9を操作するための.NETマネージ ライブラリであるManaged DirectXが提供されている。なお、XNAのリリースに伴い、Managed DirectXの更新は終了しているが、Windows API Code Pack for Microsoft .NET Frameworkと呼ばれるWindows APIおよびDirectXを含むCOMコンポーネントの.NET用ラッパーライブラリ、もしくはオープンソース開発されているSlimDXライブラリやSharpDXライブラリなどを使用することで、.NET言語からもDirectX 9、DirectX 10、DirectX 11やDirectX 12を使用することが可能となっている。C++/CLIなどのグルー言語により独自のラッパーを明示的に作成することで、.NET言語からDirectXを間接的に利用することも可能である。
以下はコンソールに"Hello, World!"と出力する例である。
これらはVisual BasicとVisual Basic .NETの文法の類似点を示したサンプルコードである。どちらもメッセージボックスに"Hello, World"のメッセージとOKボタンを表示させるものである。
従来のVisual Basicのコード例:
Visual Basic .NETのコード例:
なお、Visual Basic .NETでも旧VBやVBScript に実装されていた旧MsgBox関数などの互換機能はライブラリによってサポートされている が、以下のように()を使ったメソッド呼び出しの形で記述しなければならない。
VB6ではクラスモジュールを作ることができ、変数やメソッドのカプセル化ができた。しかし、これは継承やポリモーフィズムをサポートするものではなくオブジェクト指向プログラムと呼び難いものであった。VB.NETではこれらがサポートされ本格的なオブジェクト指向言語となった。
VB6ではVisual Basicに固有のステートメントによってフォームの制御や文字列の操作をプログラムしていたが、VB.NETではC#などと共通に使われる.NET Frameworkの標準ライブラリに従ったプログラミングが必要となった。このため、従来のVBプログラマのノウハウが通用しにくい状況が生まれた。。
VB6ではエラー発生時にcodice_1文によってメソッド内のエラー処理にジャンプさせる方式であった。VB.NETではC#やJavaなどと同様に、codice_2による例外処理を記述できる。これによって呼び出し先メソッド内部で生じたエラーを、呼び出し側メソッドで一括して取り扱うことができるなど、プログラムの柔軟性が増した。
他の.NET言語との互換性確保のため、固定長文字列は (基本データ型としては) サポートされなくなった。Visual Basic 6.0互換関数が用意されているが、マルチバイト文字では正常に動作しないため、目的の出力形式にエンコードしてバイト数をカウントしてから処理を行うといったコーディングが必要となる。
バージョン7.xに限りVisual Basic .NETと称しているが、従来のようにVisual Basicと名称が改められた8.0以降もVB.NETの系列であることに違いはない。Microsoft.VisualBasic.dllやvbc.exe、およびVisual Studio IDEのバージョン情報ダイアログに見られるように、製品バージョンおよび内部バージョンはVisual Studioと同様のバージョン番号が割り当てられている。また、内部バージョン13は忌み番のためスキップされた。
2002年に、Visual Basicを基に強いオブジェクト指向プログラミングの概念を取り入れた新しい言語Visual Basic .NETの開発環境・処理系として、Microsoft Visual Studio .NET (Microsoft Visual Basic .NET) がリリースされた。VB.NETはVB6の後継言語とされ、マイクロソフト社の.NET Frameworkという新しい技術基盤に対応している。対応する.NETのバージョンは.NET Framework 1.0。
VB.NETは新たにウェブサーバ用のプログラム、Web用のプログラムが開発できるなどのネットワーク開発機能が追加された。VB6の後継といっても、豊富なデバッグ機能が追加されたり、中間コード形式になるといった言語設計思想そのものが変わるなど、様々な点で大幅な機能の追加および削除が行われた。
対応する.NETのバージョンは.NET Framework 1.1。
製品名称からは「.NET」という名前がなくなったが、上記のVB.NETと連続性がある言語である。言語仕様が強化され、C# 2.0同様にジェネリックの要素が導入されたほか、パーシャルクラスや演算子のオーバーロードなどがサポートされた。また、開発環境も大きく強化されている。
対応する.NETのバージョンは.NET Framework 2.0であるが、Visual Studio用の拡張をインストールすることで.NET Framework 3.0対応アプリケーションの開発も可能になる。
同時期にリリースされたC# 3.0に合わせて言語仕様が強化され、構造化照会構文であるLINQや、ラムダ式、匿名型などの要素が追加された。
対応する.NETのバージョンは.NET Framework 3.5（.NET 3.5は3.0および2.0の完全なスーパーセットのため、3.0および2.0のアプリケーション開発も可能となっている）。
対応する.NETのバージョンは.NET Framework 4.0（3.5、3.0、2.0での開発も可能）。
C#の言語設計者として知られるアンダース・ヘルスバーグ氏が設計に携わり、VBとC#との間の言語間の格差の低減が図られるようになった 。
.NET Framework 4.5とともに公開。Visual Studio 2012に同梱される。
C# 5.0同様、非同期プログラミングを言語仕様レベルでサポートするAsync/Await構文を導入した。
.NET Framework 4.5.1とともに公開。Visual Studio 2013に同梱される。
Developer Packをインストールすることで.NET Framework 4.5.2対応アプリケーションの開発も可能になる。
2015年に.NET Framework 4.6とともに公開。Visual Studio 2015に同梱される。Roslynと呼ばれるコンパイラレイヤーにより、Visual C#と同等のIDE機能を備えるに至った。
VB.NET 14の主要な新機能は下記のとおり。