[解決済み] uintとintの使い分け [クローズド]。
質問
私はしばらくの間、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 を控えめに使用することを意味します。
関連
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] intからstringに変換しますか?
-
[解決済み] C# はパディングゼロで int を文字列に変換しますか?
-
[解決済み】StringをIntに変換する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない