Temukan bagaimana perubahan yang akan datang akan meningkatkan kode Anda dan menjadikan hidup Anda sebagai pengembang menjadi sedikit lebih mudah.

Detail dari Pratinjau C# 12 yang sangat dinantikan telah bocor, memberikan gambaran sekilas tentang fitur-fitur yang akan datang yang akan merevolusi bahasa. Fitur-fitur ini sangat menjanjikan untuk meningkatkan keterbacaan kode, mengoptimalkan kinerja, dan membuka kunci kemampuan bahasa yang canggih.

Ekspresi Pengalihan yang Disempurnakan

C # 8 diperkenalkan ekspresi saklar dasar yang memungkinkan Anda mengekspresikan logika kondisional kompleks secara ringkas, dalam bentuk yang dapat dibaca. C# 12 melangkah lebih jauh dengan memperkenalkan sintaks pencocokan pola baru untuk ekspresi sakelar, membuatnya lebih mudah untuk menulis kode yang ekspresif dan ringkas.

Pertimbangkan cuplikan kode berikut.

var hasil = obj mengalihkan
{
int Saya Kapan saya > 0 => "Positif",
int Saya Kapan saya < 0 => "Negatif",
_ => "Nol"
};

Kode ini menggunakan ekspresi sakelar untuk menentukan apakah bilangan bulat adalah

positif, negatif, atau nol. Di C# 12, Anda dapat menyederhanakan kode ini lebih jauh menggunakan sintaks pencocokan pola baru:

var hasil = obj mengalihkan
{
> 0 => "Positif",
< 0 => "Negatif",
_ => "Nol"
};

Sintaks ini memungkinkan Anda untuk menghilangkan Kapan kata kunci dan gunakan operator relasional secara langsung dalam ekspresi sakelar.

Konstruktor Utama untuk Kelas dan Struktur

Anda sekarang dapat membuat konstruktor utama di mana saja kelas atau struct (alternatif kelas yang ringan). Dengan menggunakan konstruktor utama, Anda dapat menambahkan parameter ke deklarasi kelas dan menggunakan nilai ini di dalam badan kelas.

C# 9 memperkenalkan konstruktor utama sebagai bagian dari sintaks posisi untuk rekaman. C# 12 memperluas ini ke semua struct dan kelas.

Anda dapat meletakkan parameter setelah nama jenis dalam tanda kurung seperti yang ditunjukkan di bawah ini:

publik kelas Murid(int pengenal, rangkaian nama, IEnumerable<desimal> nilai)
{
publikMurid(int pengenal, rangkaian nama): ini(id, nama, Dapat dihitung. Kosong<desimal>()) { }
publikint id => id;
publikrangkaian Nama { mendapatkan; mengatur; } = nama. Memangkas();
publikdesimal IPK => nilai. Setiap()? nilai. Rata-rata(): 4.0M;
}

Parameter konstruktor utama berada dalam cakupan di seluruh tubuh tipe yang mendeklarasikan. Anda dapat mengatur properti atau bidang atau juga dapat menggunakannya dalam metode atau fungsi lokal sebagai variabel. Anda juga dapat memberikan parameter ini ke konstruktor dasar.

Peningkatan Interpolasi String

String interpolasi telah ada sejak C#6. Di C# 12, Anda sekarang dapat membuat nilai dinamis untuk string menggunakan ekspresi yang rumit.

int saya = 5;
rangkaian keluaran = $"Nilai i adalah {Saya}, dan kuadratnya adalah {i*i}.";
Menghibur. WriteLine (keluaran);

Kode ini mencetak "Nilai i adalah 5, dan kuadratnya adalah 25".

Menggunakan Arahan untuk Jenis Tambahan

Dengan C# 12, Anda dapat menggunakan direktif alias untuk membuat alias untuk tipe apa pun, bukan hanya tipe yang diberi nama. Anda dapat membuat alias semantik untuk tupel, larik, penunjuk, atau jenis tidak aman lainnya.

Berikut beberapa contohnya:

menggunakan Pengukuran = (rangkaian Unit, int Jarak);
menggunakan Satuan Int = int?;
Contoh penggunaan alias:
publikruang kosongPerhitungan(pengukuran pengukuran)
{
// Badan Metode
}

Peningkatan Ekspresi Lambda

C# 12 memberdayakan ekspresi lambda dengan memungkinkan Anda menentukan nilai default untuk parameter. Sintaksnya identik dengan parameter default lainnya:

Misalnya, (int inkremenTo = 5) => inkremenTo + 1 menetapkan nilai default 5 untuk parameter incrementTo, yang akan digunakan panggilan lambda jika Anda tidak memberikan nilai.

var kenaikanDenganDefault = (int kenaikanTo = 5) => kenaikan ke + 1;
kenaikanDenganDefault(); // 6
kenaikanDenganDefault(9); // 10

Selain itu, banyak penyempurnaan lain yang disertakan pada ekspresi lambda agar lebih efektif.

Misalnya:

  • Anda sekarang dapat membuat ekspresi yang lebih kompleks dalam fungsi lambda.
  • Anda kini dapat mengubah ekspresi lambda menjadi pohon ekspresi yang menyederhanakan kueri kompleks dan mengoptimalkan performa.

Aliran Asinkron

Anda dapat mengulang melalui sumber data asinkron dengan yang baru aliran asinkron fitur C # 12. Iterator baru ini—tunggu dulu—membantu Anda mengulangi serangkaian data asinkron:

menungguuntuk setiap (var barang di dalamGetItemsAsync())
{
Menghibur. WriteLine (item.nilai);
}

C# 12: Merevolusi Kode Dengan Fitur Baru yang Menyenangkan

Untuk mengantisipasi C# 12, Anda dapat mengharapkan pembaruan yang mengubah permainan dengan fitur-fitur baru yang menarik. Kemajuan ini, seperti ekspresi sakelar yang ditingkatkan, konstruktor utama, dan peningkatan ekspresi lambda, menunjukkan fokus yang kuat pada kesederhanaan kode, fleksibilitas, dan kinerja.

C# 12 siap memberikan lompatan ke depan yang signifikan, memungkinkan Anda menulis kode yang lebih ekspresif, efisien, dan kuat.