ここから本文です

C#とC#.NETでは何が違うのでしょうか? 教えて下さい。

yukinoyosimituさん

2009/2/1813:36:54

C#とC#.NETでは何が違うのでしょうか?
教えて下さい。

閲覧数:
27,820
回答数:
2

違反報告

ベストアンサーに選ばれた回答

abiko_tetuさん

編集あり2009/2/1902:37:50

C#は、標準言語の内のひとつ。
C#.NETは、その標準言語C#を使ったマイクロソフト社製のコンパイラー。

ただし、標準言語と言っても、もとは、.NETという技術の開発用に、マイクロソフト社が作った言語。
また、標準言語と言っても、現時点では、マイクロソフト社しかコンパイラーを出していない。
このことから、実質上C#とC#.NETは同じと言ってもいい状態です。


[C♯の詳細説明]

かなり昔、マイクロソフト社は、インターネットを自社の利益に悪影響を与える存在として拒絶していました。
しかし、インターネット市場が広がるのを見て方針を変え、Windowsにインターネットエクスプローラーを搭載させ、インターネットを受け入れました。
ところで、マイクロソフトでは、プログラムを部品化する技術仕様としてCOM/DCOMという技術を使っていました。
ボタンやテキストボックス等のコントロールと呼ばれる部品も、COM/DCOMの技術で成り立っていました。
前述の通り、マイクロソフト社はインターネットを受け入れることになって、このCOM/DCOMも、インターネット上で動作する仕様に改良することを試みました。
しかし、COM/DCOMとインターネットの相性が悪く、COM/DCOMのインターネット仕様化は無理でした。
そこで、XMLというネットの技術仕様に着目して、XML仕様を土台にしたプログラムの部品化技術の開発に成功しました。
この新技術が.NET(ドットネット)です。
当初、.NET技術の開発用のプログラミング言語としてC++が使われ、それをマネージC++と呼んでいました(ここで言う当初とは、Visual Studio.NETが登場する前のアルファ、ベータバージョン時)。
しかし、マネージC++は、標準言語としてのC++仕様からかけ離れて来て、それならば、いっそうのこと、.NET技術開発用の新言語を誕生させることになりました。
それがC♯です。
前述のXMLを土台にした技術(プロトコル)をSOAPと言い、これは国際標準化団体W3Cに提出されました。
また、言語のC♯は、国際標準化団体ECMAに提出されました。
C♯は、.NET技術での開発を行うための言語と前述しましたが、.NETは、マイクロソフト固有の用語です。
よって、標準的な表現で言い直すと、「C♯は、CLI(共通言語基盤)での開発を行うための言語」となります。
このCLI(共通言語基盤)とは、最初の方で説明したインターネット仕様での標準化を意味しています。
この標準化により、言語の違いに関係なく、それぞれのプログラムが自由にリンク(結合)することが可能になりました(ただし、この標準化仕様に従っている場合に限定されますが)。


[C++/CLI]

なお、当初でのVisual Studio.NET(2002)とVisual Studio.NET(2003)では、マイクロソフトは、C++プログラマーが、C♯に移行することを望んでいました。
しかし、思惑通りには行かず、C♯への移行はうまく行きませんでした。
そこで、Visual Studio2005で、C++/CLIなる言語が誕生しました。
マネージC++からC++/CLIへの入れ替えです。
C++/CLIは、標準言語C++にかなり近い仕様です。
C++/CLIも、C♯と同様に、CLI(共通言語基盤)での開発を行うための言語です。
C++/CLIも、国際標準化団体ECMAに提出されました。
このことにより、C++プログラマーは、.NET技術による開発がやりやすくなりました。


[訂正]

他の回答者さんから御指摘いただきましたので、

「実質上C#とC#.NETは同じ」



「実質上C#とC#.NETは、ほぼ同じ」

に訂正します。
また、具体的な違いは以下の通りです。



[具体的違い]

C#とC#.NETとの、経緯上での違いは上記説明の通りです。
しかし、具体的な違いは、今までの説明では分かりにくいです。


ところで、C#コンパイラーでは、コンパイラーとしての各種機能をプログラマーに提供しています。
マイクロソフトでのC#.NETコンパイラーの場合では、Windowsアプリケーション等を構成させるための、コントロールやクラスライブラリ等の機能が提供されます。
これらの機能は、.NET Frameworkと呼ばれるプログラムに収められています。


これに対し、例えば、家電等の回路を制御するためのプログラムを開発するC#コンパイラーが誕生したとしましょう。
例えば、マイコンチップのPIC用のC#コンパイラーが誕生したとします(マイコンには、H8やPIC、Z80等の各種の種類があります)。
そうなると、そのC#コンパイラーが提供する機能は、PIC自体と、その周辺機器を制御する機能になります。


このように、C#は標準の言語仕様の範囲の物で、C#.NETは、その環境に応じた機能が提供される範囲の物です。
すなわち、マイクロソフトの環境(Windows環境)によるC#が、C#.NETです。


[余談]

マイコンでのC♯コンパイラーは、例えとして話しましたが、将来的になら、まんざら有り得ない話しではありません。
ユビキタス(いつでも、どこでもコンピュータのある環境)を迎え入れる時代が来たら、当然、マイコンもCLIの受け入れが検討されますので。

ベストアンサー以外の回答

1〜1件/1件中

distrofreakさん

2009/2/1814:35:51

他の回答者様のいうとおり、広義には同じものですが、オープンソースの実装としてMono C#が存在しますので、Microsoft社の製品が唯一の実装ではありません。念のため。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。