掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETとC#の違い (ID:115572)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
.NETにおいては、IL(中間言語)という物が使われるのは御存知ですよね。 http://park16.wakwak.com/~mimi/dotnet/misc/msil.html VBで作られようが、C#で作られようが、コンパイルされれば、 ILコードに変換されます。ILは、環境に依存しない共通言語で、 .NETのCLR(共通言語ラインタイム)を直接呼び出す事のできるコードです。 ILコード自体は共通なので、どの言語で作成されたexeであっても、 速度面では全く変わりません。(コンパイラの性能等によって、 どのようなILコードに翻訳されるかという違いはあるかもしれないけど) なので結局の所、コンパイルすれば(MSILのコードになってしまえば)、 どの言語で作られたか、という事は関係ないです。.NETにおいては。 IL自体は、作成された言語に依存しない共通のコードになりますので、 たとえば、 Reflector for .NET などのフリーソフトを使えば、 コンパイルして作成されたexe, dllファイル等をもとにして、 それを C# のコードに変換することも、VB のコードにする事さえできます。 http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/fuscator04.gif http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/fuscator05.gif http://www.aisto.com/roeder/dotnet/ つまるところ、作成される成果物がほぼ同じである以上、あとは、 「自分(または共同開発する人達)が使い慣れた言語でコーディングする」 という選び方をすれば良いのではないかと。 各言語の良し悪しは、宗教論になってしまうので書きませんが、 とりあえず、言語の違いを幾つか書いてみると。。。 [VB] ・変数やクラス名で、大文字小文字を区別しない。 ・レイトバインドによるコーディングが容易。(Option Strict Off) ・演算子をオーバーロードできない。(次期バージョンから対応) ・言語仕様は、Microsoftの独自実装。 [C#] ・変数やクラス名で、大文字小文字が区別される。 ・レイトバインドが面倒。(http://support.microsoft.com/?id=302902) ・演算子のオーバーロードが可能。 ・言語仕様が ECMA-334 によって標準化されており、Microsoft以外からもコンパイラが提供されている。 > ではC#はランタイムが必要あるけど、 > C++.NETはランタイムが必要ないということでしょうか? C++.NET で、「.NETのアプリ」を作った時は必要ですが、 「.NETではないアプリ」を作った時は不要です。 VB.NETやC#.NETは、「.NETのアプリ」は作れますが、 「.NETではないアプリ」は作れないため、.NETランタイムが必須です。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.