C#とVisual Basic (.NET)は、 .NETフレームワークでプログラミングするために使用される2 つの主要なプログラミング言語です。
言語の歴史
C# と VB.NET は、構文と歴史において非常に異なる言語です。
名前が示すように、C# の構文は、1970 年代にベル研究所(AT&T)のDennis Ritchieによって開発されたコアC プログラミング言語に基づいています。 [1] Javaと C++ も構文が C 構文に基づいているプログラミング言語であり、[2]外観と操作性が共通しています。このトピックの詳細については、 「C# と Java の比較」を参照してください。
BASIC の起源はダートマス大学に遡ります。[3] BASIC (Beginner's All-purpose Symbolic Instruction Code) は、プロセッサ固有またはブランド固有のメインフレームやハードウェア用に記述されたアセンブリ言語を使用する難しさを克服する方法として、1960 年代に開発されました。プログラミングは、ハードウェアを超越するプログラミングの論理構成を維持するためというよりは、マーケティング上の理由から、設計上ハードウェアに依存していました。(Microsoft がオペレーティング システムで有名になったのは、ハードウェア固有のデバイスをオペレーティング システム内にカプセル化することで、消費者をハードウェア固有のデバイスから解放したからです。) コードはコンパイラによって「移植可能」になり、実際、Visual Basic .NET と C# はどちらも現在同じ CLR (Common Language Runtime) を使用しています。Microsoft と HP は、当初の目標であった ISO 標準言語の作成に関心を持っていましたが、HP はサポートを中止し、ISO コンピュータ言語は国際標準として実現することはありませんでした。
VB.NET のルーツは BASIC にあります。当初、BASIC は大学コミュニティでコンピュータ プログラミングに初めて触れる「基本」言語として使用され、その頭字語は言語を正確に表していました。1970 年代に、この言語は当時のマイクロコンピュータ メーカーによって採用され、単純な ROM 組み込みプログラミング言語としてだけでなく、入出力制御用の準オペレーティング システムとしても使用されました。1980 年代初頭、この言語は Microsoft によって採用され、当初の目的を超えて大幅に拡張され、1990 年代を通じて Windows プログラミング用の「ラピッド アプリケーション開発」(RAD) ツールとして販売された「Visual Basic」言語/プラットフォームになりました。[4]これは、 PowerBuilder などの 1990 年代の他の RAD ツールと直接競合しました。[5] Visual Basicは成功した開発プラットフォームでしたが、2000年代初頭にMicrosoftが.NET Frameworkとそれに関連するVisual Studio開発プラットフォームを導入した際に、バージョン6(VB6)以降は廃止されました。当時、Microsoftは新しい「統合開発環境(IDE)」の2つの新しいプログラミング言語の基礎として、現在のC++とVB6言語を使用しました。これらの言語はC#とVB.NETと名付けられました。
2017年2月、マイクロソフトは2010年から続いてきた2つの言語の「共進化」戦略を終了し、2つの言語が再び独立して進化できるようにする意向を伝えました。現在、C#はマイクロソフトベースの開発言語として主流となっています。開発者は、VB 15(Visual Studio 2017で初めて登場)には新しいC# 7.3に含まれる特定の言語機能が欠けていることに気付くでしょう。[6]
言語の比較
C# と VB.NET は構文的に大きく異なりますが、違いはそれだけです。Microsoft は、これらの言語を同じ .NET Framework 開発プラットフォームの一部として開発しました。これらは両方とも、Microsoft の同じ言語開発チームによって開発、管理、サポートされています。[7] これらは同じ中間言語 (IL) にコンパイルされ、同じ .NET Framework ランタイム ライブラリに対して実行されます。[8] プログラミング構造にはいくつかの違いがありますが (以下でさらに説明します)、その違いは主に構文上のものであり、Microsoft が VB6 からの変換を支援するために提供している Visual Basic の「互換性」ライブラリを使用しないと仮定すると、VB のほぼすべてのコマンドは C# に同等のコマンドがあり、その逆も同様です。最後に、両方の言語は、機能を拡張するために .NET Framework の同じ基本クラスを参照します。その結果、いくつかの例外を除き、どちらの言語で記述されたプログラムも、簡単な構文コンバーターを使用して他の言語に変換できます。このタスクには、多くのオープン ソース製品と市販製品があります。言語間の唯一の基本的な違いは、インターフェイスの実装と、イベントの宣言、発生、処理にあります。どちらの言語も高水準プログラミング言語ですが、VB.NET はいくつかの点でわずかに高いレベルの抽象化を維持しています。
ランタイム多言語サポート
.NET の主な目標の 1 つは、多言語サポートです。設計の意図は、さまざまなMicrosoft言語すべてがすべてのOS機能に同じレベルでアクセスでき、同じレベルのパワーと使いやすさを実現し、ある言語で記述されたモジュールから別の言語で記述されたモジュールへの呼び出しを簡素化できるようにすることでした。
実装では、すべての .NET プログラミング言語は同じランタイム エンジン、統一された抽象構文ツリー、および共通中間言語を共有します。さらに、すべての .NET 言語は、ガベージ コレクション、言語間の継承、例外処理、デバッグなどのプラットフォーム機能にアクセスできます。これにより、どの .NET プログラミング言語からでも同じ出力バイナリを生成できます。
開発環境
Visual Studio は、C# と VB.Net の開発環境にわずかな違いを提供します。Visual Studio の以降のリリースごとに、これらの言語の開発環境の違いは縮小されました。たとえば、Visual Studio の初期バージョンでは、 Visual Basic .NET と比較して C# のIntellisenseサポートが不十分であり、C# のバックグラウンド コンパイルは提供されていませんでした。[9]現在、開発環境の主な違いは、VB6 に由来する Visual Basic .NET の追加機能であり、次のものが含まれます。
- デフォルトの名前空間は非表示になっています(ただし無効にすることができます)
- 一部のプロジェクト ファイルは非表示になっています (ユーザーは表示できます)
- 自動生成された
My.*名前空間には、レジストリやアプリケーション構成ファイルを操作するメソッドなど、VB6から引き継がれた多くのよく使用されるショートカットが含まれています。
バックグラウンド コンパイルは Visual Studio IDEの機能で、ソリューションをビルドしなくてもコンパイル エラーを識別する目的で、プログラマーが記述したとおりにコードをコンパイルします。この機能は Visual Basic では .NET 1.1 以降で使用でき、Visual Basic .NET 用の Visual Studio の初期バージョンに存在していました。ただし、バックグラウンド コンパイルは Visual C# では比較的新しい概念で、Visual Studio 2008 Standard Edition のサービス パック 1 以降で使用できます。C# の明らかな欠点は、ソリューションが再構築されるまでエラー一覧パネルが更新されないことです。C# での大規模なプロジェクトのリファクタリングは、コンパイル エラーをハイライトするためにソリューションを頻繁に再構築する必要があるため、より困難になります。[10] Visual Basic ではエラー一覧パネルがバックグラウンド コンパイラと同期されるため、これは当てはまりません。
バックグラウンドコンパイルはシステムリソースへの要求が少なく、ビルドサイクルが速くなります。[10]これは特に大規模なプロジェクトで有利であり、IDEでデバッグを開始するのに必要な時間を大幅に短縮できます。[10]
言語機能
技術的な観点から見ると、C# と VB.NET の違いの大部分は、構文上の糖衣です。つまり、ほとんどの機能は両方の言語に存在しますが、一部の機能は一方の言語の方がもう一方の言語よりも簡単に実行できます。2 つの言語間の違いの多くは、実際にはIDEを中心にしています。
Visual Basic .NET の機能は C# にはない
- 変数は、構文を使用して宣言できます
WithEvents。この構文を使用すると、プログラマーはクラス名のドロップダウンリストからオブジェクトを選択し、宣言のドロップダウンリストからメソッドを選択して、メソッドシグネチャを自動的に挿入できます。 - イベントの自動接続。VB.NET には
Handlesイベントの構文があり、イベント ハンドラーをオブジェクトではなくオブジェクト変数に接続します。 - イベントの起動はキーワードで行われ
RaiseEvent、IDE は選択可能なイベントのリストを表示できます。RaiseEvent暗黙的に、イベント ハンドラーが接続されているかどうかをチェックします (C# では、イベントの発生はプロシージャの呼び出しと構文的に同じであり、接続されたイベント ハンドラーをチェックするための追加のコード行が必要です)。 - イベントのデリゲートは宣言する必要はありません。イベントの宣言で暗黙的に宣言されます。
- 非修飾ドット参照を使用してオブジェクトを参照する。
With ... End With構造を使用する。 - XMLリテラル[11]
- インライン日付宣言、例
#12/31/2000# Module(C# の静的クラスには追加のセマンティクスがありますが、各フィールドは個別に静的として宣言する必要があります)Module現在のファイルにインポートされたsのメンバーは、先行するコンテナアクセサなしでアクセスできます[12]- 名前空間
My。[13] - COMコンポーネントと相互運用性は、Object型が実行時にバインドされるため、VB.NETでより強力になりました。[14]しかし、C# 4.0では
dynamic、Objectの遅延バインド形式として機能する型が追加されました。 - 名前空間はプロジェクトレベルでインポートできるため、C#のように個々のファイルにインポートする必要はありません。
- 条件付きコンパイラ定数の定義
- プロパティメソッドはパラメータを取ることができる
ByRefプロパティは、パラメータ ( C# では パラメータ )を使用してメソッドに渡すことができますref。C# では、変数を宣言し、プロパティ値を変数にコピーし、メソッド呼び出し後に変数をプロパティにコピーするという 3 つの追加命令を記述する必要があります。Enumインターフェース内で定義できるCaseステートメントには、 のような不等式を含めることができます(C# では、ネストされたandステートメントIs >= 3でこれを模倣できます)。ElseIfOverloadsキーワードは、プロパティまたはプロシージャが、同じクラスまたは基本クラス内で同じ名前を持つ 1 つ以上の既存のプロパティまたはプロシージャを再宣言することを指定します。(C# でこのキーワードがないと、意図しないオーバーロードが発生する可能性があります)Implementsクラス メンバーが実装するインターフェイスを示すキーワード。C# にも同様の構文がありますが、これはオプションであり、メンバーが単一のインターフェイスを実装する場合にのみ適用できます。Like正規表現を使用するよりもはるかに簡単な方法で文字列のパターン比較を行う演算子です。(C# では、Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString メソッドで同じものが使用できますが、便利な言語キーワードとしては使用できません)Returnステートメントは必須ではありません。関数に値を割り当てることによっても返すことができます。- Visual Basicには次のような定数が組み込まれています
vbCrLf。vbTab - VB ではすべての変数が自動的に初期化されるため、パラメータ修飾子は存在しません
out。 - キーワードは、
MyClass元々実装されたクラスの現在のインスタンスを参照するオブジェクト変数のように動作します。MyClassは に似ていますMeが、そのすべてのメソッド呼び出しは、メソッドが NotOverridable であるかのように扱われます。 MyBase.New派生クラスのコンストラクターから基本クラスのコンストラクターを明示的に呼び出すために使用されます。- この
My機能により、多数の .NET Framework クラスに簡単かつ直感的にアクセスでき、Visual Basic ユーザーはコンピューター、アプリケーション、設定、リソースなどを操作できるようになります。 - ローカル変数 (つまり、プロシージャ内で宣言された変数) は自動的に初期化されます。
Staticローカル変数は、プロシージャの呼び出し間でその値を保持するために、修飾子を使用して宣言できます。- 宣言
Defaultにより、プロパティがインデックスになり、 のようなコレクション取得用の短い構文を使用できるようになりますMyCollection(5)。C# には、キーワードをプロパティ名として再利用する同様の構造があります。または など、this異なるタイプのキーを使用して、複数のインデクサーを宣言できます。MyCollection(5)MyCollection("Bob") - C# には
DirectCast(単一の CLR 命令へのマッピング) がないため、追加のランタイム エラー保護を含む演算子によって厳密な型変換を実現できますas。 - C# には、
Endアプリケーションを突然終了するステートメントがありません。 - ラムダ式の推論
Dim x = Function(n As Integer) n + 1
Visual Basic .NET にはない C# の機能
- VB.NET で C# ref struct を使用する: 詳細情報は、たとえば次の場所にあります: https://www.vbforums.com/showthread.php?889867-Use-C-ref-struct-in-VB-NET-Today-And-vote-against-preventing-this-in-Roslyn
- 複数行のコメント。VB では、これは Visual Studio IDE エディターで処理され、選択範囲にコメント マーカーが追加されます。
- 静的クラス (非静的メンバーを含めることができないクラスですが、VB.NET のモジュールは基本的に追加のセマンティクスを持つ静的クラスです)
- オーバーフロー/アンダーフローチェックのきめ細かな制御にコンテキスト
checkedを使用できるunchecked - 反復的な for ループには、 などの複数の条件を含めることができます
for(int i = 0; i < 10 && somethingTrue; i++)。これは C の遺産であり、for文は基本的に 文の構文糖ですwhile。 - プロパティのゲッターとセッターは、別々のインターフェイスを実装できます。VB では、代わりに 2 つのプロパティを定義する必要があります。1 つのインターフェイスを実装する読み取り専用プロパティと、もう 1 つのインターフェイスを実装する書き込み専用プロパティです。
- 暗黙的なインターフェース実装
??最初の null 以外の値を返すには、coalesce 演算子を使用できます(例:null ?? null ?? 1returns )。VB.NET では、 2 つのパラメーターを持つ関数1を使用する必要があります(例: returns ) 。IfIf(Nothing, If(Nothing, 1))1- ポインタ(安全でないコンテキスト内)
- 条件演算子 ?:
(someThingTrueOrFalse) ? whenTrue() : whenFalse();。VB.NET では、If3 つのパラメータを持つ関数を使用する必要がありますIf(someThingTrueOrFalse, whenTrue(), whenFalse())。
Visual Basic .NET のその他の特性は C# には適用されません
- ブール値Trueを整数に変換すると、使用される変換に応じて-1または1が返される可能性があります。
- 変数の割り当てと比較には同じトークンを使用します。C
=#では==比較と=値の割り当てに別々のトークンを使用します。 - VB.NET 識別子では大文字と小文字は区別されません。
- 異なるデータ型の変数に値を割り当てる場合(オンになっていない場合
Option Strict)、VB.NET は可能な場合は値を強制変換します。この自動強制変換により、予期しない結果が生じることがあります。例:
Dim i As Integer = "1" 'コンパイラは自動的に文字列を整数に変換しますDim j As String = 1 'コンパイラは自動的に整数を文字列に変換しますIf i = j Then 'コンパイラはiとjの間でキャストおよび比較を行いますMsgBox ( "使用しないでください。ただし、このメッセージが表示されます!" ) End If
デフォルトではOption Strict下位互換性の理由からオフになっていますが、アプリケーションのパフォーマンスが向上し、命名エラーやその他のプログラミングミスの可能性が減るため、 Microsoft [15]によって推奨されており、オンにすることが良い習慣であると広く考えられています。 [16]Option Strict
Val()null 値を解析して double に変換する関数 (C# ではConvert.ToDouble()任意のオブジェクトを double 型の値に変換するために使用されますが、null 値の場合は例外をスローします)- CInt、CStr、CByte、CDbl、CBool、CDate、CLng、CCur、CObj、および言語に組み込まれたさまざまな変換関数
Visual Basic .NET には適用されない C# のその他の特性
- デフォルトでは、数値演算はチェックされません。これにより、数値オーバーフローが検出されないリスクはありますが、コードが若干高速になります。ただし、プログラマーは、算術演算をチェックされたコンテキストに配置して、オーバーフロー チェックを有効にすることができます。(Visual Basic では、オプションをチェックすることで実行できます)
- C# 識別子では大文字と小文字が区別されます。
- 複数の変数に同じ値を割り当てるには、 を使用できます
a=b=c。
構文の比較
Visual Basic .NET は、 T-SQLの使用経験があるプログラマーには馴染みのあるステートメント ( for ループの場合はステートメント)を使用してコード ブロックを終了します。C # では、ブロックを区切るために中括弧 ( ) が使用されます。これは、 C++やJavaなどの広く導入されている他の言語の使用経験があるプログラマーには馴染みのあるものです。また、C# では、ブロックが 1 つのステートメントのみで構成されている場合は、中括弧を省略できます。
End BlockNameNext{}
C# では大文字と小文字が区別されますが、Visual Basic .NET では区別されません。したがって、C# では、variable1と のように、同じ名前の変数が 2 つ存在する可能性がありますVariable1。Visual Studio は、VB.NET で入力された変数の大文字と小文字を修正 (統一) します。ただし、大文字と小文字の区別が便利な場合もあります。C# プログラマーは通常、型名とメンバー名を大文字にし、フィールド名と変数名を小文字のままにします。これにより、たとえば、メソッド引数にかなり自然な名前を付けることができます。public int CalculateOrders(Customer customer)ただし、C# コードを Visual Basic などの大文字と小文字を区別しない言語に変換する場合や、大文字と小文字を区別する言語の読み方に慣れていない人にとっては、問題が発生する可能性があります。
キーワード
Visual Basic では大文字と小文字が区別されません。つまり、キーワードでは大文字と小文字の任意の組み合わせが許容されます。Visual Studio は、すべての Visual Basic キーワードを、"Public"、"If" などの既定の大文字形式に自動的に変換します。
C# では大文字と小文字が区別され、すべての C# キーワードは小文字になります。
Visual Basic と C# はほとんどのキーワードを共有していますが、違いは、デフォルトのVisual Basic キーワードが C# キーワードの大文字バージョンであることです (例: Publicvs public、Ifvs if)。
いくつかのキーワードは、Visual Basic と C# でバージョンが大きく異なります。
Friendvsinternal- フレンドアセンブリを除き、クラス間の参照は許可するがアセンブリ間の参照は許可しないアクセス修飾子Mevsthis- 現在のオブジェクトインスタンスへの自己参照MustInheritvsabstract- クラスが直接インスタンス化されることを防ぎ、派生クラスへのオブジェクト参照のみを作成するように消費者に強制します。MustOverridevsabstract- 派生クラスにこのメソッドをオーバーライドさせるMyBasevsbase- 現在のクラスが派生した基本クラスを参照しますNotInheritablevssealed- 継承できないクラスを宣言する場合NotOverridablevssealed- 派生クラスによってオーバーライドされないメソッドを宣言する場合Overridablevsvirtual- 派生クラスでオーバーライドできるメソッドを宣言しますOverridesvsoverride-仮想メソッドをオーバーライドとしてマークしますSharedvsstatic- オブジェクトの明示的なインスタンスを必要としないメソッドを宣言する場合
などの一部の C# キーワードは、sealedクラス定義に適用された場合とは対照的に、メソッドに適用された場合に異なるものを表します。一方、VB.NET では、異なるコンテキストに異なるキーワードが使用されます。
コメント
条件文
ループ
比較者
プリミティブ型
オブジェクトの種類
採用とコミュニティのサポート
C#とVB.NETはどちらも採用率が高く、開発者コミュニティも非常に活発で、Microsoftは両方のコミュニティを全面的にサポートしています。.NETフレームワークの開発者は、VB.NETとC#の両方を主要言語として広く使用しています。[17] [18]ただし、C#の方がインターネット上でのコミュニティ活動が多く、C#向けの書籍も多くあります。これは、C#の採用率が高いか、ユーザーがC#に関するサポートをもっと必要としているかのどちらかを示している可能性があります。
コミュニティと業界での採用例には次のようなものがあります。
- 2010年7月のTIOBEプログラミングコミュニティインデックスでは、C#がVisual Basicを上回ったことが示されています[19]
- TIOBEプログラミングコミュニティインデックスによると、2018年にVB.NETがC#を上回ったことが示されています[20]
- オリジナルのC#言語設計者であるスコット・ウィルタマスは、2010年3月のブログで、「私たちが持っている最も信頼できる数字は、VB.NETとC#の採用がほぼ同等であることを示している」と述べています。[17]
- 2007年のForrester Researchの調査では、.NET開発者の59%がソフトウェアの作成にVB.NETのみ を使用していることが明らかになりました。[18]
- Visual Basic ExpressはVisual Studio Expressのダウンロードの中で最も人気のあるダウンロードです。[21]
- Visual Studio Magazineが2007年11月に実施した調査によると、「41%がC#を使用し、34%がVB.NETでプログラミングし、25%が「その他」と回答した」とのことです。[21]
- Apressのマーケティング製品マネージャーであるStephen Wileyは、 「C#のタイトルはVB.NETのタイトルの本の売上を2対1から3対1の差ではるかに上回っています」と報告しています。[21]
- Microsoft 社員のブログ サイトであるMSDN ブログには、C# に関する投稿が 770,000 件ありますが、VB.Net に関する投稿は 378,000 件しかありません (2016 年 2 月 4 日現在) [引用が必要]
- Usenet検索エンジンのGoogle グループでは、「VB .Net」で 35,200,000 件、「C#」で 244,000,000 件のヒットが返されます (2016 年 2 月 4 日現在) [引用が必要]
- 2018年のStack Overflow開発者ユーザー調査によると、プロの開発者の35%がC#を使用し、VB.NETを使用しているのはわずか6.9%でした。[22]
その他の言語
C++/CLI (旧マネージド C++)
C++/CLI ( Managed Extensions for C++の代替) は、C# や VB.NET ほど普及率が高くありませんが、かなりの支持を得ています。C++/CLI は、構文、スタイル、文化的に C# に最も近いものです。ただし、C++/CLI は C# よりも C++ のルーツに近いままです。C++/CLI は、他の言語ではサポートされていないか制限されているポインター、デストラクタ、およびその他の安全でないプログラム概念を直接サポートします。.NET コードと標準 C++ コードの両方を直接使用できます。C++/CLI は、ネイティブ/レガシー C++ アプリケーションを .NET フレームワークに移植する場合や、プログラマーがコードをより細かく制御したい場合に使用されますが、この制御には使いやすさと読みやすさの大きな犠牲が伴います。Visual Studio に付属する自動化ツールの多くは、C++ コードを操作するときに機能が制限されます。これは、リフレクションでは、C# や VB.net の場合ほど多くのコード情報を提供できないためです。
じ#
J# は、.NET の採用において、かなり離れた 4 位に位置しています。J# は、主に Java アプリケーションを .NET フレームワークに移行しやすくするために設計された言語です。開発者は、Java または J++ コードの多くを変更せずに .NET フレームワークで実行できるため、コードの一部を C# などの別の .NET 言語に個別に移行できます。J# は、他の言語と同じレベルの更新は受けず、コミュニティ サポートも同じレベルではありません。たとえば、Visual Studio 2005 Team System は、C#、VB.Net、および C++ でのユニット テストの自動生成をサポートしていますが、J# はサポートしていません。既存の J# 機能セットで顧客のニーズがほぼ満たされ、J# の使用が減少しているため、J# は廃止され、Visual Studio 2008 以降のバージョンには含まれていません。
追加の .NET 言語
すべての .NET 言語は共通中間言語(CIL)にコンパイルされます。CIL には豊富なメタデータが含まれており、機能的にも論理的にも元の .NET 言語コードと同等です。これらの理由から、CIL で直接コードを書くことは可能ですが、めったに行われません。CIL が .NET 言語コードと同等であるため、 .NET Reflectorなどのツールを使用すると、.NET アセンブリを元のソースとほぼ同じソース コードに変換できます。コード難読化ツールは、これを防ぐためによく使用され、アセンブリの CIL を直接変更して、より高レベルの .NET 言語への逆コンパイルを困難または不可能にします。
参考文献
- ^ Ritchie, Dennis (1993年4月). Chistory (レポート). Bell Labs. 2015年2月3日時点のオリジナルよりアーカイブ。 2013年8月18日閲覧。
- ^ 「Javaプログラミング言語の歴史」。Freejavaguide.com 。 2013年8月18日閲覧。
- ^ 「ダートマス大学におけるBASIC」
- ^ 「Visual Basic の誕生」 Forestmoon.com 。 2013 年 8 月 18 日閲覧。
- ^ 「Powersoft History PowerBuilder History」 Lannigan.org . 2013年8月18日閲覧。
- ^ 「.NET 言語戦略」。2017 年 2 月。
- ^ Krill, Paul (2009-02-27). 「Microsoft の統合プログラミング言語 | Developer World」。InfoWorld。2013-01-26 時点のオリジナルよりアーカイブ。2013-08-18に取得。
- ^ 「Microsoft Intermediate Language」。Dotnet-guide.com。2013年 8 月 18 日閲覧。
- ^ Matthew Gertz。「スケールアップ: 非常にビジーなバックグラウンド コンパイラ」。MSDN マガジン。2008 年 2 月 19 日時点のオリジナルからアーカイブ。2008年 12 月 16 日閲覧。
- ^ abc 「コンパイラ支援リファクタリングを提供するシステムと方法論」。Freepatentsonline.com 。 2015年2月24日閲覧。
- ^ Jonathan Allen. 「C# には VB9 の XML リテラルが必要ですか?」2009 年 1 月 13 日閲覧。
- ^ 「DateAndTime.Now プロパティ (Microsoft.VisualBasic)」。Msdn.microsoft.com。2015 年 2 月 18 日。2015年 2 月 24 日に取得。
- ^ 「My を使用した開発 (Visual Basic)」。Msdn.microsoft.com。2015 年 2 月 18 日。2015年 2 月 24 日閲覧。
- ^ 「Early vs. Late Binding」。Visualbasic.about.com。2015 年 2 月 25 日時点のオリジナルよりアーカイブ。2015 年2 月 24 日閲覧。
- ^ 「Option Strict ステートメント」。Msdn.microsoft.com。2015 年 2 月 18 日。2015年 2 月 24 日に取得。
- ^ GetDotNetCode.com: 「Option Strict On」。Getdotnetcode.com。2012年3月13日時点のオリジナルよりアーカイブ。2015年2月24日閲覧。
- ^ ab 「VB と C# の共進化」。MSDN。2010年 3 月 27 日閲覧。
- ^ ab 「Mono が Visual Basic プログラムを Linux に導入」。Linux-Watch。2012年 9 月 14 日時点のオリジナルよりアーカイブ。2010 年 3 月 25 日閲覧。
- ^ 「C# が史上初めて Visual Basic よりも高い評価を受ける」 Tiobe.com 。2015年2 月 24 日閲覧。
- ^ 「TIOBE Index」。TIOBE.com: ソフトウェア品質会社。2019年3月27日閲覧。
- ^ abc Patrick Meader. 「C# の爆発的な人気」。Visual Studio Magazine、2007 年 11 月。2008 年 4 月 20 日時点のオリジナルよりアーカイブ。2008年 12 月 16 日閲覧。
- ^ 「Stack Overflow 開発者アンケート 2018」。Stack Overflow。2018年 4 月 22 日閲覧。
外部リンク
- Microsoft Visual Studio 言語の詳細な比較
- Microsoft Visual Studio 言語同等物 2003-2010
- Visual Basic と C# を使用した Microsoft VSTO プログラミング
- CodeProject VB と C#
- C# と VB.NET の構文上の違い
