Bab sebelumnya berakhir pada satu masalah: input pengguna selalu berupa string, sementara perhitungan membutuhkan angka. Menjumlahkan teks "20" dengan angka 5 bukan operasi yang sah di C#. Proses mengubah string menjadi tipe lain disebut parsing, dan class pembungkus tipe seperti int serta double menyediakan method Parse untuk tugas itu.
Mengubah String Menjadi Angka #
string inputUmur = "20"; // contoh hasil Console.ReadLine()
int umur = int.Parse(inputUmur);
Console.WriteLine(umur + 5);Output yang Dihasilkan:
25Mari kita telaah baris demi baris:
- Baris 1 (
string inputUmur = "20";): Variabel berisi teks, persis seperti isiConsole.ReadLine(), sehingga contoh ini bisa dicoba tanpa mengetik apa pun. - Baris 2 (
int umur = int.Parse(inputUmur);): Methodint.Parsemembaca string, mengenali karakter angka di dalamnya, dan menghasilkan nilaiintyang benar-benar bisa dihitung. - Baris 4 (
Console.WriteLine(umur + 5);): Karenaumurkini bertipeint, operator+menjumlahkan20 + 5dan menampilkan25, bukan menyambung teks.
Parse untuk Tipe Lain #
Pola yang sama berlaku pada tipe numerik dan boolean lain:
double berat = double.Parse("55.5");
bool setuju = bool.Parse("true");
Console.WriteLine(berat);
Console.WriteLine(setuju);Output yang Dihasilkan:
55.5
TrueApa yang Terjadi saat Parse Gagal #
Method Parse menuntut string yang benar-benar sesuai bentuk tipe tujuannya. String aneh membuatnya melempar exception FormatException:
try
{
int angka = int.Parse("dua puluh"); // bukan bentuk angka yang sah
Console.WriteLine(angka);
}
catch (FormatException)
{
Console.WriteLine("Input tidak dapat dibaca sebagai angka.");
}Output yang Dihasilkan:
Input tidak dapat dibaca sebagai angka.Blok try membungkus kode yang berisiko melempar exception. Ketika int.Parse("dua puluh") gagal, eksekusi lompat ke blok catch yang menangkap FormatException dan menjalankan penanganannya, sehingga program tidak berhenti secara mendadak. Pola Parse plus try-catch ini sah, tetapi section berikutnya memperkenalkan cara yang lebih ringkas dan aman untuk input pengguna.