1. ホーム
  2. c#

[解決済み] uintとintの使い分け [クローズド]。

2023-03-24 21:45:42

質問

私はしばらくの間、C#プログラマーがあらゆるところでintを使う傾向があり、uintを使うことはほとんどないことを観察してきました。しかし、その理由について、私は満足のいく答えを発見したことがありません。

もし相互運用性が目的なら、すべてのCLI言語が符号なし整数をサポートしているわけではないので、uintは公開APIに現れないはずです。しかし、それではなぜ内部クラスにおいてさえも int が普及しているのか説明できません。BCLでuintが控えめに使われているのは、このためではないかと思います。

C++では、負の値が意味をなさない整数がある場合、符号なし整数を選択します。

これは明らかに負の数が許されない、または期待されないことを意味し、コンパイラはあなたのために何らかのチェックを行います。また、配列インデックスの場合、JITは簡単に下界チェックを省くことができると思います。

しかし、int型とunit型を混在させる場合、特別な注意とキャストが必要になります。

uintはもっと使われるべきなのでしょうか?なぜでしょうか?

どのように解決するのですか?

なぜそうなるのか、あなたの見解は? uint が BCL で使用されないのは、主な理由だと思われます。

UInt32 は CLS Compliant ではないので、パブリック API での使用には完全に不適切です。 プライベート API で uint を使用する場合、他の型への変換を行うことになりますが、一般的には型を同じにする方が簡単で安全です。

また、C# の開発では、C# が唯一の言語である場合でさえ、これはそれほど一般的ではないのではないかと思います。 一般に、開発者は (ありがたいことに) 自分が構築しているフレームワークのスタイルを模倣しようとします。C# の場合、これは、公開および内部の API をできるだけ .NET Framework BCL に似せて作成しようとすることを意味します。 これは、uint を控えめに使用することを意味します。