0

フレームワークを作成していますが、C#、C ++、VBから利用できるようにしたいと考えています。今のところ、他の言語に制限されていません。ただし、CLSの使用にはいくつかの問題があります(unsignなどを使用する必要があります)。ここでCLSを使用していない場合に発生する実際の問題をいくつか挙げていただけますか?

4

3 に答える 3

2

さて、符号付き/符号なしタイプに関する規則だけでなく、CLS 準拠に関する多くの規則があります。従わなければならないか、すでに問題を抱えている簡単なものは次のとおりです。

2 つの識別子が異なると見なされるためには、大文字と小文字だけでなく、それらが異なる必要があります。

C# や C++ では必要ありませんが、Visual Basic では必要です。また、「今のところ他の言語」という言葉も使用しました。リストが将来拡大する可能性がある場合は、今すぐ CLS 準拠の道に進むことで、多くの問題を回避できます。

于 2012-09-25T07:46:38.233 に答える
1

一般に、アセンブリを としてマークし、CLS に準拠していない型とメンバーで属性をCLSCompliant使用することをお勧めします。CLSCompliant(false)

もちろん、アセンブリ内の大部分の型が CLS に準拠していない場合は、アセンブリを非準拠としてマークする方がおそらく理にかなっています。

他の言語の問題を最小限に抑える 1 つの方法は、個々のメンバーのみに を付けCLSCompliant(false)、そのようなメンバーごとに CLS 準拠の代替手段を提供することです。

于 2012-09-25T08:01:10.257 に答える
0

CLS は、CLS 準拠の言語で使用できる機能のサブセットを定義します。署名されていないプリミティブ型などのいくつかのエキゾチックな機能は、言語が CLS をより簡単に理解できるようにするために除外されています。

使用する言語が使用するデータ型をサポートしている限り、コードが CLS に準拠している必要はありません。とにかくコードを CLS 準拠としてマークできるようにしたい場合は、サポートされていない型を使用することはできません。

場合によっては、より大きなデータ型を使用して符号なしの値を処理できます。たとえば、 を使用して、Int64が保持できる任意の値を保持UInt32できます。

于 2012-09-25T07:55:27.820 に答える