Ronald Rajagukguk

just another newbie in .NET
See also: Other Geeks@INDC

Nullable Types in C#

hi3x setelah ampir 2 taun kenal C# baru sekarang gua kenal ama tipe yang satu ini. okeh kronologisnya gini, kemaren gua maen2x ama MVC-nya si om scott gutrie dah nemuin sintaks rada aneh kayak dibawah ini : (perhatiin yang dihiglight kuning)

image

he3x agak aneh ya, kalo kita lihat abis tipe ada tanda tanya baru kemudian nama variabelnya, ternyata itu adalah penulisan dari sebuah nullable types. tulisan aslinya kalo dicodingan biasa adalah kayak gini :

Nullable<int> okeh = 12;

nah karena C# penuh dengan trik2x untuk memudahkan programmer baris kode diatas bisa diganti jadi gini :

int? okeh = 12;

okeh jadi gunanya buat apa ya itu tipe nullable? nah kalo dalam contoh di gambar yang pertama (pada MVC si om scott gutrie) adalah agar kita bisa mengetahui apakah nilai dari sebuah integer itu null atau tidak. karena tentunya integer tidak memiliki nilai null dalam valuenya. kalo gak percaya coba deh compile baris ini pasti error :

int okeh = null;

nah kembali ke contoh di gambar pertama, jadi kalau dalam kasus MVC si om Scott yang banyak ngandelin URL dalam prosesnya bisa aja kan terjadi saat-saat dimana pengguna menulis url gak lengkap sehingga mesin redirect dari MVC ini mengembalikan nilai null untuk parameter page di fungsi list. Nah disinilah kegunaan dari nullable type, kita bisa ngecek apakah nilai integer masukannya ada atau tidak dan melakukan sesuatu berdasarkan fakta tersebut. Tipe nullable ini juga kalo dicek di punya properti yang namanya HasValue. Gunanya adalah untuk ngecek apakah variabel dari tipe tersebut memiliki nilai atau tidak.hi2x menarik juga ini fitur, kok gua baru nyadar sekarang2x ya..

cheers...

PS: kalo mo ngerti lebih lanjut bisa klik di sini, sini atau situ

Share this post: | | | |
Posted: May 02 2008, 07:54 PM by ronald | with 6 comment(s) |
Filed under: , ,

Comments

Narenda Wicaksono said:

Nah ini dia nih penyakitnya ngasih nama parameter seenak jidat, hehe..

Cheers,

Narenda Wicaksono

# May 2, 2008 8:31 PM

Zakka Fauzan Muhammad said:

Selain itu berguna juga untuk mempermudah akses database, terutama kalo suatu field itu boleh bernilai null... Kalo dalam contoh okeh itu kan, jelas lebih gampang

insertDatabase(okeh);

dibandingkan

if(okeh.HasValue) insertDatabase(okeh)

else insertDatabase(null)

# May 2, 2008 11:42 PM

hakimrie said:

[kutip]

.....adalah agar kita bisa mengetahui apakah nilai dari sebuah integer itu null atau tidak. karena tentunya integer tidak memiliki nilai null dalam valuenya.

[/kutip]

jadi Nullable types itu integer atau bukan Nald?

%peace%

# May 3, 2008 5:36 AM

irwansyah said:

Manakah yang lebih baik (dari segi kecepatan ngetik sama performance) antara:

1.

  int a = 0;

  Nullable<int> b = RetrieveFromDB();

  if (b.HasValue)

  {

     a = b.Value;

  }

2.

  int a = 0;

  object b = RetrieveFromDB();

  a = DBUtil.ReplaceNull(b, 0);

# May 5, 2008 10:49 AM

hakimrie said:

no. 1 mungkin begini agak lebih ringkas (2 baris)

<code>

int? b = RetrieveFromDB();

int a = (b.HasValue) ? b.Value : 0

</code>

hemat spasi,{ dan } dan gak harus ingat2 DBUtil :P

# May 5, 2008 3:11 PM

hakimrie said:

int a = (b.HasValue) ? b.Value : 0;

sorry tadi kurang ; :(

# May 5, 2008 3:14 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 
Are you human?:  


Enter the numbers above: