Tipe data pada C#

Meskipun banyak tipe data pada C#, tipe-tipe data yang paling sering digunakan adalah int, double, string, bool dan object. Masing-masing memiliki kegunaannya sendiri:

  • int, digunakan untuk menyatakan suatu bilangan bulat, positif maupun negatif, sebagai contoh jumlah murid dalam satu kelas.
  • double, digunakan ketika kita perlu menyatakan suatu bilangan pecahan, misalkan nilai, harga atau berat. Akan tetapi, double adalah data dengan ketelitian 15-16 digit. Sehingga terkadang tipe data float dengan ketelitian 7 digit lebih disukai untuk contoh contoh tadi, dengan alasan menghemat memori.
  • string, digunakan ketika menyatakan sekumpulan karakter, baik itu nama, kalimat, password ataupun kode. String sesungguhnya merupakan suatu array dari char.
  • bool, bernilai true atau false. Paling sering digunakan untuk menyatakan suatu kondisi, misalnya IsEnabled, IsVisible, SedangHujan, SedangLapar, dan lain lain.
  • object, adalah class dasar dari semua tipe data dalam C#. Digunakan untuk menyatakan tipe data yang tidak pasti.

Tipe-tipe data lainnya adalah:

  • Mirip dengan int: sbyte, short, long, untuk tipe bertanda, byte, ushort, uint, ulong untuk tipe yang tak bertanda
  • Mirip dengan double: float dan decimal
  • char, untuk menyimpan satu karakter

Konversi tipe data antar angka pada C#

Terkadang kita dapat langsung menugaskan nilai antar tipe data yang berbeda. Misalnya jika kita menubaskan suatu nilai int ke variabel long, tidak ada perintah khusus yang dibutuhkan. Jika kita menugaskan tipe data yang lebih kecil ke tipe data yang lebih besar, C# akan secara implisit mengkonversi nilai tersebut. Akan tetapi jika tipe data yang lebih besar ditugaskan ke tipe data yang lebih kecil, diperlukan konversi tipe data. Sebagai contoh:

  int anInt = 10;
  long aLong = 2000000000;
  long luarBatas = 3000000000;
  //3 milyar, melebihi batas int

  anInt = (int)aLong;
  Console.WriteLine(anInt);
  //Akan tampil 2000000000

  anInt = (int)luarBatas;
  Console.WriteLine(anInt);
  //Akan tampil -1294967296

  Console.ReadKey();

Penting diketahui bahwa jika suatu tipe data yang lebih besar dikonversi ke tipe data yang lebih kecil, dapat terjadi kehilangan data. Hal-hal ini juga berlaku ketika mengkonversi antara tipe data bilangan bulat dengan tipe data floating point. Selalu ingat bahwa berkurangnya ketelitian dapat terjadi.

Konversi tipe data string pada C#

Tipe yang paling banyak digunakan untuk input, output dan penyimpanan sebetulnya adalah string. Untuk mengkonversi tipe data apapun ke string sesungguhnya cukup sederhana karena setiap tipe data di C# memiliki metode ToString(). Sebagai contoh:

  bool AdaMatahari = true;
  int angka = 15;
  double pecahan = 70.88;

  Console.WriteLine(AdaMatahari.ToString()); //True
  Console.WriteLine(angka.ToString());   //15
  Console.WriteLine(pecahan.ToString()); //70.88

  Console.ReadKey();

Di sisi lain, agak sulit mengkonversi dari string ke tipe lain. Semua tipe data numerik memiliki metoda Parse dan TryParse. Kita menggunakan ini untuk mengkonversi string ke tipe data numerik. Kita menggunakan Parse ketika kita SANGAT yakin mengenai string yang bersangkutan, ketika kita tidak yakin, kita gunakan TryParse. Sebagai contoh:

  string strBool = Console.ReadLine();
  bool aBool = Boolean.Parse(strBool);
  Console.WriteLine(aBool);

  string strInt = Console.ReadLine();
  Console.WriteLine(Int32.Parse(strInt));

  string strDouble = Console.ReadLine();
  double aDouble;
  bool BisaParse = double.TryParse(strDouble, out aDouble);
  if (BisaParse) Console.WriteLine(aDouble); else Console.WriteLine("Tolong input suatu angka");

  Console.ReadKey();

Coba masukkan "True" atau "FaLsE" pada prompt pertama, dan input yang valid pada prompt kedua dan ketiga. Program akan mengeluarkan kembali input yang diterima. Kemudian coba masukkan string yang bukan boolean ke dalam prompt pertama, akan terjadi runtime error. Dan terakhir, coba input string yang bukan angka pada prompt ketiga, program akan dengan rapi menampilkan "Tolong input suatu angka". Perlu diperhatikan bahwa runtime error pada saat debugging berarti Critical Error pada software yang sudah jadi. Hal ini harus dihindari semampunya.

Literal pada C#

Istilah literal atau literal constant merujuk pada suatu nilai pada program yang tidak dapat diubah. Kita menggunakan literal untuk menyatakan nilai-nilai. Literal-literal pada C# dijelaskan dalam tabel di berikut:

Tipe data Literal Contoh
bool true atau false true
int Bilangan bulat 0, -200, 87329
int Awalan 0x untuk menyatakan bilangan heksadesimal 0xF, 0xaeaeae
double Bilangan pecahan dengan titik untuk menyatakan koma 72.59034
double e untuk menyatakan pangkat sepuluh 6.02e23, 1.602e-19
string Karakter-karakter yang diapit oleh petik dua "6f8c11# ^_^ <3"
char Satu karakter yang diapit oleh petik satu 'K'

Untuk tipe data string, terdapat karakter karakter yang tidak dapat diketik langsung ke dalam petik dua. Untuk mewakili karakter-karakter tersebut, digunakan escape sequences. Escape sequence yang umum digunakan antara lain:

Escape Sequence Karakter yang diwakili
\' Single quote
\" Double quote
\\ Backslash
\0 Null, not the C# null value
\a Bell
\b Backspace
\f Form feed
\n Newline
\r Carriage Return
\t Horizontal Tab
\v Vertical Tab

Sebagai contoh apabila kita ingin menampung mysql < "path\ke\file\sqldump" ke dalam suatu string:

string command = "mysql < \"path\\ke\\file\\sqldump\"";

Batas nilai tipe-tipe data numerik pada C#

Bagian ini tidak terlalu penting, jika Anda lebih menghargai waktu dibanding pengetahuan, lewati bagian ini. Salah satu alasan untuk menggunakan tipe data lainnya adalah karena batasan nilai. Batasan nilai pada tiap tipe data di C# dipaparkan pada tabel berikut:

Tipe data Penjelasan Batas nilai
sbyte Bilangan bulat 8 bit bertanda −128 sampai 127
short Bilangan bulat 16 bit bertanda −32,768 sampai 32,767
int Bilangan bulat 32 bit bertanda −2,147,483,648 sampai 2,147,483,647
long Bilangan bulat 64 bit bertanda −9,223,372,036,854,775,808 sampai 9,223,372,036,854,775,807
byte Bilangan bulat 8 bit tak bertanda 0 sampai 255
ushort Bilangan bulat 16 bit tak bertanda 0 sampai 65,535
uint Bilangan bulat 32 bit tak bertanda 0 sampai 4,294,967,295
ulong Bilangan bulat 64 bit tak bertanda 0 sampai 18,446,744,073,709,551,615
float Floating point berketelitian 7 digit ±1.5e−45 sampai ±3.4e38
double Floating point berketelitian 15-16 digit ±5.0e−324 sampai ±1.7e308
decimal Bilangan dengan 28-29 angka penting (-7.9 x 1028 sampai 7.9 x 1028) / (100 to 28)

Bilangan bulat bertanda sesungguhnya menggunakan 1 bit dari ukuran data mereka untuk menyatakan tanda (negatif atau positif). Itulah kenapa batas nilai positif dari tipe tak bertanda dua kali lebih besar dari tipe yang bertanda dengan ukuran data yang sama. Akan tetapi bilangan bulat bertanda sudah jarang digunakan kecuali ketika berurusan dengan antarmuka hardware, pengolahan citra, atau pemrograman tingkat rendah lainnya. Dan juga, saya sarankan hindari menggunakan tipe data decimal karena tipe data ini tidak lazim pada bahasa pemrograman yang lain.