C # 6 memperkenalkan anggota bertubuh ekspresi, yang memungkinkan kode disederhanakan dalam metode dan properti yang hanya mengembalikan hasil ekspresi:
public override string ToString()
{
return string.Format("{0} {1}", _field1, _field2);
}
menjadi:
public override string ToString() =>
string.Format("{0} {1}", _field1, _field2);
Karena kita sekarang memiliki dua sintaks yang persis sama dan valid, beberapa aturan praktis harus digunakan untuk memutuskan mana yang akan digunakan. Kapan alternatif baru sesuai?
public override string ToString() => $"{_field1} {_field2}";
?Jawaban:
Bahasa pemrograman fungsional hanya terdiri dari ekspresi, sehingga sebagian besar memiliki fitur seperti ini dari dasarnya. Anda menggunakannya ketika Anda memiliki ekspresi yang relatif pendek, sering sering diulang, yang dapat diganti dengan nama yang lebih pendek, lebih bermakna.
Contoh umum adalah predikat yang digunakan di tempat lain, seperti:
Jika ekspresi terlalu panjang, lebih baik membaginya menjadi fungsi yang terpisah atau mungkin satu fungsi dengan nama hasil antara. Jika pendek, tetapi Anda tidak dapat memikirkan nama yang bagus, Anda lebih baik menyalin ekspresi daripada membuat nama yang buruk
condition1
atau sesuatu.sumber
Dari C # /. NET Little Wonders: Anggota Berekspresi di C # 6 :
(Penekanan, milikku; lihat Pembaruan 1 di bawah)
Lebih banyak dari Ringkasan artikel di atas:
Dan kutipan lain tentang kinerja, karena masalah kinerja juga dapat berperan ketika layak untuk menggunakan fitur bahasa tertentu:
(penekanan, penulis)
Pembaruan 1: @JörgWMittag berkata
Tampaknya penulis asli mungkin salah mengeja. Untuk memperjelas, dari The New dan Improved C # 6.0 :
Agar jelas, ini tidak membuat metode atau properti Ekspresi . Ini menggunakan sintaks Expression untuk mengurangi baris kode (dan jumlah kurung kurawal).
Rekomendasi asli saya masih berlaku: Gunakan ketika kode Anda jelas dan lebih mudah dipahami, bukan hanya karena Anda dapat menggunakannya.
sumber
return
kata kunci) dapat membuat lebih mudah dibaca. Bagaimanapun, ekspresi kompleks masih merupakan ekspresi kompleks yang sama persis, hanya terkubur dalam kekacauan sintaksis.