Itu adalah fitur baru dari C # 7, yang merupakan fitur sangat bagus yang sering digunakan dalam hubungannya dengan pencocokan pola. Fitur ini, dan banyak lagi, diumumkan di blog tim C # What's New in C # 7.0 .
Hal yang coba dicapai tim di sini adalah kode yang lebih lancar. Apakah Anda ingat beberapa kasus di mana daftar variabel menjadi sangat panjang dan tidak berguna? Contoh singkatnya:
int i;
Guid g;
DateTime d;
if (int.TryParse(o, out i)) { /*use i*/ }
else if (Guid.TryParse(o, out g)) { /*use g*/ }
else if (DateTime.TryParse(o, out d)) { /*use d*/ }
Lihat masalahnya? Tidak ada gunanya memiliki semua variabel di luar itu yang tidak melakukan apa-apa. Jumlah garis dapat dipotong menjadi dua dengan menggunakan C # 7:
if (int.TryParse(o, out int i)) { /*use i*/ }
else if (Guid.TryParse(o, out Guid g)) { /*use g*/ }
else if (DateTime.TryParse(o, out DateTime d)) { /*use d*/ }
Tidak hanya jumlah baris yang diminimalkan, juga tidak ada daftar variabel yang tidak perlu dalam cakupan di mana Anda tidak ingin memilikinya. Ini mencegah Anda untuk menggunakan variabel yang tidak ingin Anda gunakan, tetapi sekarang terlihat oleh Anda.
Fitur ini juga berguna dengan pencocokan pola dalam switch
pernyataan, seperti dalam kode ini (yang memiliki perilaku berbeda dari kode di atas!):
switch (o)
{
case int i: { /*use i*/ break; }
case Guid g: { /*use g*/ break; }
case DateTime d: { /*use d*/ break; }
}