私の場合は次のとおりです。
既存の C++ ライブラリをラップする .net ライブラリに取り組んでいます。C++ の 1 つのメソッドは unsigned int を返し、System.Uint32 で .net に対応するメソッドも返したいと考えています。
これにより、署名されていないデータ型をサポートしていない言語で問題が発生しますか?
私の場合は次のとおりです。
既存の C++ ライブラリをラップする .net ライブラリに取り組んでいます。C++ の 1 つのメソッドは unsigned int を返し、System.Uint32 で .net に対応するメソッドも返したいと考えています。
これにより、署名されていないデータ型をサポートしていない言語で問題が発生しますか?
ほとんどの場合、問題が発生します(特に、2 ^ 31より大きい数値を返す場合)が、このSOの投稿によると
符号なし型をサポートしない.NETと互換性のある言語はありますか?
符号なしデータ型をサポートしない.NET言語は多くないようです(または、重要性は主観的かもしれませんが、重要な言語はありません)。
クラスが合法的に CLS に準拠している場合、CLS の最小要件を超えるものをサポートするために言語に必要な唯一の機能は、そのような機能がなければ意味がないものです。たとえば、CLS 準拠のメソッド グループには、これらのメソッドによって提供される機能が他の手段で利用できる場合、符号なし整数型のオーバーロードが含まれる場合があります。
クラスが何らかの外部データセットから符号なし 32 ビット値を読み書きする手段を提供するようなことを想定している場合、CLS 準拠はその型が type のデータを読み書きするメソッドを提供することを禁止しませんUInt32
が、そのようなメソッドを介して読み書きできるデータは、そのタイプを必要としない他のメソッドによって読み取り可能でなければなりません [たとえば、Int64
代わりに使用できます]。を使用するクライアント コードは、 を使用Int64
するコードよりも効率が悪い可能性がありますUInt32
が、サポートする言語が失敗してもUInt32
、クライアント コードが必要なことを実行できなくなるわけではありません。わずかに速度が低下するだけです。