In C # hat die DateTime
Eigenschaft Month
einen Typ int
(eine 32-Bit-Ganzzahl mit Vorzeichen), ihr Bereich beträgt jedoch immer nur 1-12. Was sind die Gründe, warum sich das C # -Team für int
einen kleineren numerischen Typ entschieden hat, z. B. byte
(8-Bit-Ganzzahl ohne Vorzeichen)?
9
DateTime
wie in CoreFX implementiert, codiert die Zeit als einen einzelnen 64-Bit-Wert. Informationen wie Tage oder Monate werden aus diesem Wert durch eine clevere Mathematik (GetDatePart()
) extrahiert . Dies ist kein Grund für die Verwendung eines int als Rückgabewert, es hat nur keine Nachteile . Beachten Sie auch, dass die Rückgabe eines Bytes von einer Funktion aufgrund von Ausrichtungsproblemen nicht effizienter ist als die Rückgabe eines int.Month
.Antworten:
int
wird für fast alle ganzzahligen Variablen in .NET verwendet, obwohl häufig ein kleinerer Typ ausreicht. Außerdem werden vorzeichenlose Typen fast nie verwendet, obwohl dies möglich ist.Einige Gründe:
+
oder<
beispielsweise) umständlich sein . Die Regeln sind nicht offensichtlich. Ich bin ein erfahrener Entwickler und konnte Ihnen nicht alle Regeln nennen. Ich muss es nicht wissen.int
ist schnell auf allen gängigen Architekturen. Kleinere Typen führen häufig zu langsameren Conversions.int
überall verwenden.byte
würde zum Beispiel binäre Daten vorschlagen. (Siehe Kommentar von Flater.)Es ist eine nützliche Konvention
int
.quelle
byte
Eigenschaft sehen würde, würde ich nicht automatisch denken, dass es sich um einen numerischen Wert handelt. Ein Byte kann viele Dinge sein (z. B. eine komprimierte Sammlung von Booleschen Werten). Etwas weiter gedrängt bezweifle ich, dass sich jemand einen ansehen würdebyte[]
und denkt sich "aha, das muss ein optimierter seinList<int>
".Ein Monat ist kein Wert. Ein Monat ist nur ein Monat.
Die 1-12-Zuordnung (die 0-11 imo hätte sein sollen) dient nur dazu, das Rechnen einfacher zu machen.
Und wenn Sie damit anfangen zu rechnen, müssen Sie pragmatisch sein. Ints sind die Standardeinstellung für Ganzzahlmathematik. Also benutze diese.
Das erwarten Programmierer. Ohne Kontext: Erwarten Sie eine int.
Da Sie nicht daran interessiert sind, ob der Januar der 1. (oder der 0) ist, interessieren Sie sich für Antworten auf Fragen wie: "Wie viele monatliche Raten, bis ich diese Schulden bezahlt habe?". Und dann stellen Sie fest, dass Sie die Ganzzahl anstelle des Bytes hätten verwenden sollen.
quelle