Tipe Bawaan

C# menyediakan 16 tipe bawaan yang sudah terdefinisi, terbagi menjadi 13 tipe sederhana dan 3 tipe tidak sederhana. Semua nama tipe bawaan ditulis huruf kecil semua.

graph TD
    A[Tipe Terdefinisi] --> B[Sederhana]
    A --> C[object]
    A --> D[string]
    A --> E[dynamic]

    B --> F[Non Numerik]
    B --> G[Numerik]

    F --> H[bool]
    F --> I[char]

    G --> J[Bilangan Bulat]
    G --> K[Titik Mengambang]

    J --> L[8-Bit]
    J --> M[16-Bit]
    J --> N[32-Bit]
    J --> O[64-Bit]

    L --> P[sbyte]
    L --> Q[byte]

    M --> R[short]
    M --> S[ushort]

    N --> T[int]
    N --> U[uint]

    O --> V[long]
    O --> W[ulong]

    K --> X[decimal]
    K --> Y[float]
    K --> Z[double]

    %% Beri warna hijau pada node daun
    style H fill:#90ee90
    style I fill:#90ee90
    style P fill:#90ee90
    style Q fill:#90ee90
    style R fill:#90ee90
    style S fill:#90ee90
    style T fill:#90ee90
    style U fill:#90ee90
    style V fill:#90ee90
    style W fill:#90ee90
    style X fill:#90ee90
    style Y fill:#90ee90
    style Z fill:#90ee90
    style C fill:#90ee90
    style D fill:#90ee90
    style E fill:#90ee90

13 Tipe Sederhana

  • Tipe numerik (total 11) bilangan bulat ada 8 jenis: sbyte/byte, short/ushort, int/uint, long/ulong tipe titik mengambang ada 3 jenis: float, double, decimal (decimal khusus untuk perhitungan mata uang presisi tinggi)
  • Tipe non numerik (total 2): char (karakter Unicode tunggal), bool (hanya bernilai true atau false)

Ciri khas: Berbeda dengan C/C++, nilai numerik di C# tidak bisa langsung dipakai sebagai syarat pengecekan boolean.

3 Tipe Referensi Tidak Sederhana

string (urutan karakter), object (kelas dasar semua tipe), dynamic (untuk interoperabilitas bahasa dinamis)

Tipe C# dan Tipe .NET

Semua tipe bawaan yang terdefinisi langsung memetakan ke tipe dasar .NET. Nama tipe di C# hanyalah alias dari tipe .NET yang bersesuaian, sehingga kode tetap bisa dikompilasi jika pakai nama kelas asli .NET, namun standar resmi tidak menyarankan cara ini. Saat menulis kode C#, gunakan alias kata kunci bawaan C# daripada nama kelas lengkap .NET.

Tipe Sederhana Terdefinisi

Kata Kunci C#KeteranganRentang NilaiTipe Dasar .NETNilai Bawaan
sbyteBulat bertanda 8-bit-128 ~ 127System.SByte0
byteBulat tak bertanda 8-bit0 ~ 255System.Byte0
shortBulat bertanda 16-bit-32768 ~ 32767System.Int160
ushortBulat tak bertanda 16-bit0 ~ 65535System.UInt160
intBulat bertanda 32-bit-2147483648 ~ 2147483647System.Int320
uintBulat tak bertanda 32-bit0 ~ 4294967295System.UInt320
longBulat bertanda 64-bit-9223372036854775808 ~ 9223372036854775807System.Int640
ulongBulat tak bertanda 64-bit0 ~ 18446744073709551615System.UInt640
floatTitik mengambang presisi tunggal1,5×10⁻⁴⁵ ~ 3,4×10³⁸System.Single0.0f
doubleTitik mengambang presisi ganda5×10⁻³²⁴ ~ 1,7×10³⁰⁸System.Double0.0d
boolTipe booleantrue / falseSystem.Booleanfalse
charKarakter UnicodeU+0000 ~ U+FFFFSystem.Char\x0000 (karakter kosong)
decimalDesimal presisi tinggi (28 digit signifikan)±1,0×10⁻²⁸ ~ ±7,9×10²⁸System.Decimal0m

Tipe Tidak Sederhana Terdefinisi

Kata Kunci C#KeteranganTipe Dasar .NET
objectKelas dasar semua tipe termasuk tipe nilai sederhanaSystem.Object
stringTeks yang terdiri dari nol atau lebih karakter UnicodeSystem.String
dynamicTipe dinamis untuk kompatibilitas rakitan bahasa dinamisTidak ada tipe .NET tetap yang bersesuaian

int sama persis dengan System.Int32, dan string setara dengan System.String; kompiler mengenali dan saling menukar keduanya secara otomatis.

Aturan penulisan kode mewajibkan pakai kata kunci C# (gunakan int bukan Int32) agar kode lebih mudah dibaca.

Tipe sederhana juga disebut Tipe Nilai (Value Type)

Menyimpan satu nilai tunggal dan dialokasikan di memori stack;

Jika dideklarasikan tanpa pemberian nilai manual, akan otomatis diberi nilai bawaan yang tertera di tabel;

Semua tipe sederhana mewarisi langsung dari object dan mendukung operasi boxing/unboxing. (Dijelaskan di bagian selanjutnya)

Keluarga Tipe Bilangan Bulat

  • Tipe awalan u (uint/ushort/ulong/byte): tak bertanda, hanya bisa simpan bilangan non negatif;
  • sbyte/short/int/long: bertanda, bisa simpan bilangan bulat positif maupun negatif.

Keluarga Tipe Titik Mengambang

  • float: presisi tunggal, akhiran f. Presisi rendah tapi perhitungan cepat, cocok untuk grafis dan komputasi 3D;
  • double: presisi ganda, akhiran d. Tipe literal titik mengambang bawaan, umum untuk perhitungan sains;
  • decimal: desimal presisi tinggi, akhiran m. Dirancang khusus untuk keuangan dan mata uang tanpa kehilangan presisi titik mengambang.

Tipe Boolean dan Tipe Karakter

  • bool: hanya dua nilai yang tersedia, tidak boleh konversi implisit dengan bilangan;
  • char: menyimpan satu karakter Unicode, secara internal berupa bilangan bulat tak bertanda 16-bit.

Tipe Tidak Sederhana (Tipe Referensi Reference Type)

  1. object: kelas dasar utama, semua tipe nilai dan referensi turun darinya, inti mekanisme boxing;
  2. string: tipe referensi khusus, string bersifat tidak dapat diubah, string kosong "" adalah instansi bawaan yang valid;
  3. dynamic: tidak ada pengecekan tipe saat kompilasi, anggota diselesaikan saat runtime. Tidak ada pemetaan .NET tetap, sering dipakai untuk integrasi bahasa dinamis Python/Ruby; mengorbankan keamanan kompilasi demi fleksibilitas.
    static void Main(string[] args)
    {
        // 1. Bilangan bulat 8-bit
        sbyte sByteNum = -60;
        byte byteNum = 200;

        // 2. Bilangan bulat 16-bit
        short shortNum = -12000;
        ushort uShortNum = 50000;

        // 3. Bilangan bulat 32-bit
        int intNum = -888888;
        uint uIntNum = 3000000000U;

        // 4. Bilangan bulat 64-bit
        long longNum = -7000000000000L;
        ulong uLongNum = 12000000000000000UL;

        // 5. Tipe titik mengambang
        float floatNum = 3.14f;
        double doubleNum = 2.71828;
        decimal decMoney = 999.99m;

        // 6. Tipe boolean
        bool flag = true;

        // 7. Karakter Unicode
        char ch = 'A';

        // 8. Tipe tidak sederhana terdefinisi
        object obj = 123;
        string str = "FOXDEVELOP.COM";
        dynamic dy = "jack";
    }Code language: JavaScript (javascript)

Tipe Bawaan

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *