web-dev-qa-db-ja.com

なぜDateTime.Monthがintなのですか?

C#では、DateTimeプロパティMonthのタイプはint(32ビット符号付き整数)ですが、その範囲は1〜12のみです。 C#チームがint(8ビットの符号なし整数)などの小さな数値型よりもbyteを選択した理由は何ですか?

9
Frayt

intは.NETのほとんどすべての整数変数に使用されますが、多くの場合、より小さな型で十分です。また、符号なしの型は使用できる場合もありますが、ほとんど使用されません。

いくつかの理由:

  1. 符号付きタイプと符号なしタイプ、および異なるサイズの整数タイプは、それらを組み合わせるときに扱いにくい場合があります(+または< 例えば)。ルールは明らかではありません。私は経験豊富な開発者であり、完全なルールセットを説明することはできません。私は知る必要はありません。
  2. intは、すべての一般的なアーキテクチャで高速です。タイプが小さいと、変換が遅くなることがよくあります。
  3. 一般的なコードの99%ではパフォーマンスは問題になりません。これを考え直す必要はありません。どこでもintを使用するだけです。
  4. 意図が明確なので可読性はとても良いです。たとえば、byteはバイナリデータを提案します。 (Flaterによるコメントを参照してください。)

intを使用するのは便利な規則です。

23
usr

月は値ではありません。月はほんの月です。

1〜12のマッピング(0〜11のimoである必要があります)は、それを使って簡単に計算できるようにするためだけに作成されています。

そして、それを使って数学を始めたら、実用的でなければなりません。 Intは整数演算のデフォルトです。それらを使用してください。

それはプログラマーが期待することです。コンテキストなし:intを期待します。

1月が1(または0)であるかどうかに関心がないので、「この借金を支払うまでの月々の分割払いの数」などの質問への回答に関心があります。そして、あなたはあなたがバイトの代わりに整数を使うべきだったことがわかります。

4
Pieter B