Fitur baru di C # 6

C # 6 dikirimkan dengan Visual Studio 2015 dan hadir dengan beberapa fitur baru yang menarik. Ada banyak sekali fitur yang mempromosikan lebih sedikit kekacauan kode dan menulis kode yang lebih bersih dan dapat dipelihara. Dalam posting ini, saya ingin menjelaskan kepada Anda beberapa fitur baru dalam bahasa C #.

Filter pengecualian

Filter pengecualian bukanlah hal baru di VB - sekarang Anda memiliki fitur ini di C # juga. Ini memungkinkan Anda untuk memfilter pengecualian dalam kode Anda berdasarkan tingkat keparahan. Berikut ini contohnya.

try

{

//some code that might throw an exception

}

catch (Exception exception) if(exception.GetType() != typeof(SqlException))

{

ExceptionManager.HandleException(exception);

}

Kode di atas memeriksa apakah pengecualian yang dilemparkan adalah tipe SqlException. Jika tidak, pengecualian akan ditangani. Berikut adalah contoh lain yang menunjukkan bagaimana Anda dapat memeriksa properti Message dari objek pengecualian dan menentukan kondisi yang sesuai.

try

{

throw new CustomException("");

}

catch (CustomException ex) if (ex.Message == "")

{

//control will come in this catch block

}

catch (CustomException ex) if (ex.Message == "")

{

//control will not come in this catch block

}

Dukungan untuk asynchrony dalam catch dan terakhir block

Ini memang fitur yang hebat. Kami sering mencatat pengecualian ke file atau database. Operasi semacam itu membutuhkan banyak sumber daya dan memakan waktu karena Anda perlu mengakses disk untuk melakukan I / O. Dalam situasi seperti itu, akan sangat bagus jika Anda dapat membuat panggilan asinkron di dalam blok pengecualian Anda. Anda mungkin juga perlu melakukan beberapa operasi pembersihan di blok akhirnya yang mungkin membutuhkan banyak sumber daya dan / atau memakan waktu.

Dengan C # 6 Anda tidak perlu lagi memblokir thread saat ini saat melakukan operasi yang menghabiskan banyak sumber daya atau waktu. Potongan kode yang diberikan selanjutnya menggambarkan bagaimana Anda dapat menggunakan kata kunci await di catch dan akhirnya blok.

public async Task ProcessAsync()

{

try

{

//some code that might throw an exception

}

catch

{

await Task.Delay(5000);

}

finally

{

await Task.Delay(1000);

}

}

Cuplikan kode berikut menunjukkan bahwa Anda bisa menunggu panggilan ke metode kustom LogExceptionAsync () untuk mencatat pengecualian.

try

{

//code that might throw an exception

}

catch (Exception exception)

{

await LogExceptionAsync(exception);

}

Dukungan untuk pernyataan "menggunakan" statis

Ini adalah fitur baru yang bagus di C # 6 yang memungkinkan Anda untuk memanggil metode statis tanpa memerlukan referensi eksplisit. Berikut ini contohnya.

using System;

using System.Console;

public class Program

{

private static void Main()

{

WriteLine("New features in C# 6");

}

}

Seperti yang Anda lihat pada cuplikan kode di atas, Anda tidak perlu lagi secara eksplisit menentukan jenis saat memanggil metode WriteLine () statis yang dimiliki kelas System.Console. Intinya, fitur ini mempromosikan kode yang lebih bersih - kode yang lebih mudah dibaca, ditulis, dan dipelihara.

Penginisialisasi properti otomatis

Fitur ini memungkinkan Anda untuk menyetel nilai properti tepat di tempat mereka dideklarasikan.

class Customer

{

public string FirstName { get; set; } = "Joydip";

public string LastName { get; set; } = "Kanjilal";

public int Age { get; set; } = 44;

}

Pada versi C # sebelumnya Anda harus sering menggunakan konstruktor default untuk menyetel nilai default ke properti di kelas.

Berikut contoh lain yang menggambarkan sintaks pintasan untuk menginisialisasi properti pada titik deklarasi yang belum ditentukan penyetelnya.

class LogManager

{

public static LogManager Instance { get; } =

new LogManager();

}

Penginisialisasi kamus

Fitur ini memungkinkan Anda untuk menginisialisasi nilai default dalam kamus dengan kode yang jauh lebih sedikit. Berikut adalah contoh yang menggambarkan hal ini.

class Program

{

static void Main(string[] args)

{

Dictionary dict = new Dictionary()

{

["USA"] = "Washington DC",

["England"] = "London",

["India"] = "New Delhi"

};

}

}

Seperti yang Anda lihat pada potongan kode di atas, kamus telah diinisialisasi dengan nilai default pada titik di mana ia telah dideklarasikan. Pendekatan yang jauh lebih bagus dibandingkan dengan versi bahasa C # sebelumnya, bukan?

Konstruktor utama

Sekali lagi ini adalah fitur baru yang sangat baik - menghilangkan rasa sakit karena harus menulis kode untuk menginisialisasi anggota data kelas dari parameter dalam metode konstruktor. Dengan kata lain, fitur ini menyediakan pintasan sintaksis untuk definisi konstruktor dalam sebuah kelas.

Berikut adalah contoh yang menggambarkan bagaimana konstruktor utama dapat digunakan.

class Employee(string firstName, string lastName, string address)

{

public string FirstName { get; set; } = firstName;

public string LastName { get; set; } = lastName;

public string Address { get; set; } = address;

}

Anda dapat merujuk ke artikel MSDN ini untuk informasi lebih lanjut tentang fitur baru dan peningkatan di C # 6.