web-dev-qa-db-ja.com

CLS準拠のコードを記述する必要があるのはなぜですか?

CLSコンプライアンスに関するページをたくさん見つけました。

CLSへの準拠を理解しました:

多くの人々は、「コードを書く場合は、CLS準拠で書く必要がある」と書いています。しかし、私が読むことができる限り、汎用ソフトウェアでCLS準拠を使用する理由はありません。

私は正しいですか、それとも私は何かを逃しましたか?

60
Luca

ライブラリまたはフレームワークを作成する場合、ライブラリを任意のCLR言語から使用できるようにすることは理にかなっています。

46
Remus Rusanu

ライブラリを配布する場合、CLS準拠は特に重要です。具体的には、CLS準拠を作成すると、ライブラリがすべてのCLS準拠言語で使用できることが保証されます。

たとえば、Visual Basicでは大文字と小文字が区別されませんが、C#では区別されます。 CLS準拠の要件の1つは、パブリック(および保護された)メンバー名が大文字と小文字のみで異なるべきではないことです。これにより、Visual Basicコード、またはに基づいて区別されないその他の.NET言語でライブラリを安全に使用できます。場合。

42
Dathan

答えは、.NET言語間で最大の互換性を可能にすることです。 CLSはlingua francaであり、C#アセンブリがF#、Iron Python、C++/CLI、VB.NET、Boo、およびその他すべての.NET言語と連携できるようにします。その境界の外に出ると、アセンブリが正しく機能する場合がありますが、必ずしもそうとは限りません。

16
plinth

特定のコードをCLSに準拠させる理由はないかもしれませんが、人々はそれを「ベストプラクティス」であると言及しています-習慣ではなく、習慣として行うべきこと特定のシナリオではかなり良い。

つまり、理由がない限り、コードをCLS準拠にするそれは良い考えですnotにする理由があります。

11
Adam Robinson