Langsung ke konten
KamusNgoding
Pemula Csharp 3 menit baca

Variabel dan Tipe Data di C#

#csharp #variabel #tipe-data #int #double #string #bool #var #nullable #const

Variabel adalah wadah penyimpanan data dalam program. Di C#, setiap variabel memiliki tipe data yang menentukan jenis data apa yang bisa disimpan dan berapa banyak memori yang digunakan. C# adalah bahasa strongly typed — artinya tipe data harus ditentukan dan tidak bisa berubah sembarangan. Ini membuat kode lebih aman dan bug lebih mudah ditemukan. Mari kita pelajari tipe data dasar C#.

Mendeklarasikan Variabel

// Syntax: tipe_data nama_variabel = nilai;
int umur = 25;
string nama = "Sari";
bool aktif = true;
double harga = 99999.99;

Console.WriteLine($"Nama: {nama}, Umur: {umur}");
// Output: Nama: Sari, Umur: 25

Tipe Data Numerik

Integer (Bilangan Bulat)

int jumlah = 1000;            // 32-bit: -2,147,483,648 s/d 2,147,483,647
long populasi = 270000000L;   // 64-bit: nilai sangat besar
short kecil = 30000;          // 16-bit: -32,768 s/d 32,767
byte nilai_byte = 255;        // 8-bit: 0 s/d 255 (tanpa negatif)

Console.WriteLine($"Jumlah: {jumlah}");
Console.WriteLine($"Populasi Indonesia: {populasi:N0}");
// Output: Populasi Indonesia: 270,000,000

Bilangan Desimal

double tinggi = 175.5;        // 64-bit, presisi ~15 digit
float berat = 65.3f;          // 32-bit, presisi ~7 digit (perlu suffix f)
decimal harga = 99999.99m;    // 128-bit, presisi tinggi (perlu suffix m)

// decimal sangat cocok untuk keuangan
decimal saldo = 1_500_000.50m; // underscore untuk keterbacaan
Console.WriteLine($"Saldo: Rp {saldo:N2}");
// Output: Saldo: Rp 1.500.000,50

Tips: Gunakan decimal untuk nilai keuangan — presisinya jauh lebih akurat untuk kalkulasi uang dibanding double.

Tipe Data Teks

string

string nama = "Budi Santoso";
string kota = "Surabaya";

// Panjang string
Console.WriteLine(nama.Length);  // Output: 12

// Huruf besar/kecil
Console.WriteLine(nama.ToUpper()); // Output: BUDI SANTOSO
Console.WriteLine(nama.ToLower()); // Output: budi santoso

// Mengecek isi string
Console.WriteLine(nama.Contains("Budi")); // Output: True

// Memotong string (substring)
Console.WriteLine(nama.Substring(0, 4));  // Output: Budi

String Interpolasi dan Verbatim

string produk = "Laptop";
int harga_num = 15_000_000;

// String interpolasi ($)
string pesan = $"Harga {produk}: Rp {harga_num:N0}";
Console.WriteLine(pesan);
// Output: Harga Laptop: Rp 15.000.000

// Verbatim string (@) — backslash dianggap literal
string path = @"C:\Users\Budi\Documents";
Console.WriteLine(path);
// Output: C:\Users\Budi\Documents

// Raw string literal (C# 11+)
string json = """
    {
        "nama": "Budi",
        "kota": "Jakarta"
    }
    """;

char — Satu Karakter

char huruf = 'A';
char angka_char = '9';

Console.WriteLine(huruf);          // Output: A
Console.WriteLine((int)huruf);     // Output: 65 (nilai Unicode)

Tipe Data Boolean

bool login = true;
bool admin = false;
bool hasil_perbandingan = (10 > 5); // true

Console.WriteLine(login);   // Output: True
Console.WriteLine(admin);   // Output: False

// Berbeda dengan C++, C# mencetak "True"/"False" (bukan 1/0)

Tipe var — Inferensi Tipe

C# dapat menentukan tipe data secara otomatis berdasarkan nilai yang diberikan:

var nama = "Rina";      // compiler tahu ini string
var umur = 22;          // compiler tahu ini int
var harga = 3.14;       // compiler tahu ini double
var aktif = true;       // compiler tahu ini bool

// var bukan berarti dinamis — tipe tetap dikunci saat kompilasi
// nama = 42; // ❌ Error! Tidak bisa mengisi int ke dalam string

Kapan menggunakan var? Gunakan saat tipe sudah jelas dari konteks, terutama untuk ekspresi panjang. Hindari var jika tipe tidak jelas hanya dari melihat kodenya.

Konstanta dengan const dan readonly

// const — nilai harus diketahui saat kompilasi
const double PI = 3.14159265358979;
const int MAX_PEMAIN = 11;

// readonly — bisa diinisialisasi di constructor, tidak bisa diubah setelahnya
readonly string kode_negara = "ID";

// Mengubah const akan error
// PI = 3.14; // ❌ Error: Cannot assign to 'PI' because it is a constant

Nullable Types

Secara default, tipe nilai (int, double, bool) tidak bisa null. Tapi dengan ?, kamu bisa membuat tipe nullable:

int biasa = 0;
// biasa = null; // ❌ Error!

int? boleh_null = null;  // Nullable int
boleh_null = 42;         // Bisa diisi nilai

// Menggunakan null-coalescing operator (??)
int nilai = boleh_null ?? 0; // Jika null, gunakan 0
Console.WriteLine(nilai);    // Output: 42

// Null conditional operator (?.)
string? nama_opsional = null;
int? panjang = nama_opsional?.Length; // null (tidak error)
Console.WriteLine(panjang ?? 0);      // Output: 0

Konversi Tipe Data

Implicit (Otomatis)

int kecil = 100;
long besar = kecil;    // int → long (aman, tidak ada data hilang)
double desimal = kecil; // int → double (aman)

Console.WriteLine(desimal); // Output: 100

Explicit (Manual / Casting)

double d = 9.99;
int i = (int)d;   // Desimal dipotong, bukan dibulatkan
Console.WriteLine(i); // Output: 9

// Konversi string ke angka
string angka_str = "42";
int angka = int.Parse(angka_str);
Console.WriteLine(angka + 8); // Output: 50

// Cara aman dengan TryParse
string input = "abc";
bool berhasil = int.TryParse(input, out int hasil);
Console.WriteLine(berhasil); // Output: False (tidak error meski gagal)

Pertanyaan yang Sering Diajukan

Apa perbedaan double dan decimal?

double adalah tipe floating-point biner (IEEE 754) yang sangat cepat tapi bisa memiliki ketidakakuratan dalam desimal. decimal menggunakan representasi desimal dan jauh lebih akurat untuk nilai keuangan. Contoh: 0.1 + 0.2 dengan double menghasilkan 0.30000000000000004, tapi dengan decimal hasilnya tepat 0.3.

Apa itu var dan apakah ini sama dengan JavaScript?

var di C# adalah inferensi tipe oleh compiler — tipe tetap statis dan dikunci saat kompilasi. Ini sangat berbeda dengan var di JavaScript yang bersifat dinamis dan bisa berubah tipe kapan saja. Di C#, var nama = "Budi" sama persis dengan string nama = "Budi" — hanya lebih singkat.

Kapan menggunakan nullable types (int?)?

Gunakan nullable types saat nilai memang bisa tidak ada (belum diisi). Contoh: field tanggal lahir yang opsional di form, hasil query database yang mungkin tidak menemukan data, atau parameter opsional yang berbeda dari nilai default 0 atau "".

Apa itu string interpolasi dan mengapa lebih baik dari concatenation?

String interpolasi $"Halo, {nama}!" lebih mudah dibaca dan kurang rawan typo dibanding "Halo, " + nama + "!". Selain itu, interpolasi mendukung format expression langsung seperti {harga:N2} untuk format angka dengan 2 desimal, yang tidak bisa dilakukan dengan concatenation sederhana.

Kesimpulan

Ringkasan tipe data penting di C#:

TipePenggunaanContoh
intBilangan bulat umum42, -10
longBilangan bulat besar270_000_000L
doubleDesimal umum3.14
decimalKeuangan/presisi tinggi99.99m
stringTeks"Halo"
charSatu karakter'A'
boolBenar/salahtrue, false
varInferensi tipe otomatisvar x = 10
int?Nullable (bisa null)null atau 42

Artikel sebelumnya: Pengenalan C# — instalasi .NET SDK dan program pertama.

Langkah selanjutnya: Operator dan Ekspresi di C# — cara melakukan perhitungan, perbandingan, dan operasi logika di C#.

Artikel Terkait