2010-12-12 13 views
1

簡単な質問ですが、私はいくつかの.Netのものについて読んできました。そしていくつかの人々の話は、.Netライブラリが複数の.Net言語で使用できることを意味しています。たぶん私の笑い声だけでいいのだろうか。たとえば、C#でプログラミングされたTao FrameworkをBoo .Net言語で使用できますか?
私がそれを説明できる唯一の方法は、ライブラリが.Netで動くようにバイトコードにコンパイルされ、コンパイルされた言語でも使用できるかどうかです。私は、.NETについてあまり知らないけれども^ -^.Netライブラリは.Net言語で使用されていますか?

おかげで私は右、そしてあなたは、C#またはDelphi Prismに、たとえば、中の.NETライブラリを作成し、それをコンパイルすることができ、あなたの質問を理解している場合

+0

これは正しいです。ライブラリをアセンブリ(dll)にコンパイルすると、他の.net言語とリンクすることができます。相互運用性は大きな強みです。基本的には好きな言語を選択するか、特定の問題に最も適した言語を選択します。結果として得られるコンパイル済みコードは言語に依存しません。 –

+0

これは正式に私が長い間見つけた最も素晴らしいものです! – Isaiah

答えて

2

すべてのassmebly(ILコードとマニフェスト)はどの.NET言語でも使用できます。コードがCILに準拠し、かつCLS(共通言語仕様)。 MSDNから

(CLS):

完全に他のオブジェクトと対話するためにかかわらず、それらがで実装された言語のオブジェクトは、発信者に対して、彼らがと相互運用しなければならないすべての言語に共通する機能のみを公開する必要があります。このため、多くのアプリケーションで必要とされる一連の基本言語機能であるCLS(Common Language Specification)が定義されています。 CLSルールはCommon Type Systemのサブセットを定義します。 CLSに厳密なルールが定義されている場合を除いて、共通タイプシステムに適用されるすべてのルールがCLSに適用されます。 CLSは、開発者が多種多様な言語で利用できるようにする一連の機能を定義することにより、言語の相互運用性を強化し、保証するのに役立ちます。 CLSはCLS準拠の要件も定めています。これらは、マネージコードがCLSに準拠しているかどうか、またCLS機能を使用するマネージコードの開発をどのツールがサポートしているかを判断するのに役立ちます。単一のプロジェクトは、単一の言語を扱うことができるが、溶液が独自の言語(または参照任意の言語で書かれたすべてのアセンブリを使用して、各複数のプロジェクトを含めることができます - 私たちは問題なく私たちのVB.NetプロジェクトにC#のヘルパーライブラリを使用

+0

また、私はPythonとLispから来ていることを意味します。これは本当に涼しいです。 – Isaiah

+0

@Isaiah - MSは同じ基本ライブラリを使ってC#とVB.NETの両方を使いたいので、そのように設計しました。 – Oded

+0

典型的な休憩の1つは、C#が大文字小文字を区別していることです.vbは....ではなく、CLS非対応としてマークされ使用できないクラスを区別するメンバーを公開するC#で型を作成する場合です。 –

1

ILとアセンブリを取得します。次に、このアセンブリをVB.NETプロジェクトで参照して使用することができます。

0

完全なVSデバッグ機能を備えたMSILにコンパイル)

1

相互運用性には制限があります。特に異なる言語の基礎となる型システムが大きく異なる場合。しかし、BooとC#は構文とは非常に似ているので、これらの間に問題はないはずです。

+0

私はブーが大好きですが、私が試してみるとどういうことか... ironScheme? – Isaiah

+0

典型的な休憩の1つは、C#が大文字小文字を区別していることです.bbはそうではありません。C#で型を作成すると、ケーシング内でしか区別できないCLSとしてマークされるメンバを公開します。 –

関連する問題