Dalam C #, DateTime
properti Month
memiliki tipe int
(integer bertanda 32 bit) namun jangkauannya hanya 1-12. Apa alasan tim C # memilih int
lebih dari tipe numerik yang lebih kecil seperti byte
(bilangan bulat 8 bit yang tidak ditandatangani)?
9
DateTime
seperti yang diterapkan dalam CoreFX mengkode waktu sebagai nilai 64 bit tunggal. Informasi seperti hari atau bulan diekstraksi dari nilai itu melalui beberapa matematika pintar (GetDatePart()
). Ini bukan alasan untuk menggunakan int sebagai nilai balik, itu hanya tidak memiliki kekurangan . Perhatikan juga bahwa karena masalah pelurusan, mengembalikan byte dari suatu fungsi tidak akan lebih efisien daripada mengembalikan int.Month
.Jawaban:
int
digunakan untuk hampir semua variabel integer dalam. NET meskipun seringkali tipe yang lebih kecil sudah cukup. Juga, tipe unsigned hampir tidak pernah digunakan meskipun mereka bisa.Beberapa alasan:
+
atau<
misalnya). Aturannya tidak jelas. Saya adalah pengembang yang berpengalaman dan saya tidak bisa memberi tahu Anda set lengkap aturan. Saya tidak perlu tahu.int
cepat pada semua arsitektur umum. Jenis yang lebih kecil sering menghasilkan konversi yang lebih lambat.int
mana-mana.byte
akan menyarankan data biner misalnya. (Lihat komentar oleh Flater.)Ini adalah konvensi yang bermanfaat untuk digunakan
int
.sumber
byte
properti, saya tidak akan secara otomatis berpikir bahwa itu adalah nilai numerik. Satu byte bisa berupa banyak hal (mis. Koleksi boolean yang dipadatkan). Mendorong sedikit lebih jauh, saya ragu ada orang yang akan melihatbyte[]
dan berpikir untuk diri mereka sendiri "aha, itu harus dioptimalkanList<int>
".Sebulan bukan nilai. Sebulan hanya sebulan.
1-12 pemetaan (yang seharusnya 0-11 imo) hanya dibuat untuk membuatnya lebih mudah untuk melakukan matematika dengannya.
Dan begitu Anda mulai berhitung dengan matematika, Anda harus pragmatis. Ints adalah default de facto untuk matematika integer. Jadi gunakan itu.
Itu yang diharapkan programmer. Tanpa konteks: mengharapkan int.
Karena Anda tidak tertarik apakah Januari adalah 1 (atau 0), Anda tertarik pada jawaban untuk pertanyaan seperti: "berapa banyak cicilan bulanan hingga saya membayar hutang ini". Dan kemudian Anda mengetahui bahwa Anda seharusnya menggunakan integer alih-alih byte.
sumber