Pertama-tama, saya perlu menyatakan bahwa kata "gula sintaksis" sama sekali bukan istilah yang merendahkan. Ini juga dapat memberikan kemudahan bagi saya meningkatkan efisiensi pengembangan dan pengkodean, dalam hal kinerja. Ini membuat para developer Java iri, haha.
1. Properti yang Disederhanakan
Sebelumnya kami mendeklarasikan Properti seperti ini
lihat sourceprint?01 string pribadi _Namasaya;
02
03 string publik Namaku
04
05 {
06
07 dapatkan { kembalikan _Namasaya }
08
09 setel { _Namasaya = nilai }
10
11 }
Tidak masuk akal untuk membuat pernyataan cookie-cutter seperti ini, jadi desainer C# menyerahkan pekerjaan cookie-cutter ini kepada compiler untuk melakukannya untuk kita
lihat sourceprint?1 string publik Nama Saya { dapatkan;
Tentu saja tidak akan mengorbankan fleksibilitas. Kita bisa mengatur batasan akses untuk get atau mengaturnya secara terpisah, misalnya
lihat sourceprint?1 public string MyName { dapatkan; set internal yang dilindungi;
2. Metode penulisan komisi setelah dua kali perubahan
Di .net 1.1, kita harus mendeklarasikan metode sebelum menggunakannya dalam delegasi. Setelah .net 2.0, kita dapat menggunakan delegasi anonim, yang tidak hanya menyederhanakan penulisan, tetapi juga memungkinkan Anda mengakses variabel dalam lingkup delegasi anonim nanti; , Ram Sekarang ekspresi sudah tersedia, menulis menjadi lebih mudah.
lihat sourceprint?01 kelas MyClass
02 {
03 delegasi publik membatalkan DoSomething(int a);
04
05 //Tentukan delegasi metode
06 kekosongan pribadi Lakukan(int a) {
07 Konsol.WriteLine(a);
08 }
09
10 private void HowtoDo(DoSomething doMethod,int a) {
11 melakukanMetode(a);
12}
13
14 public static void Utama(string[] args) {
15 Kelas Saya mc = Kelas Saya baru();
16 //Panggil delegasi metode yang ditentukan
17 mc.HowtoDo(DoSomething baru(mc.DoIt), 10);
18 int x = 10;
19 //Gunakan delegasi anonim
20 mc.HowtoDo(delegasi(int a){
21 Konsol.WriteLine(a + x);
22},10);
dua puluh tiga
24 //Gunakan ekspresi lambda
25 mc.HowtoDo(a=>Console.WriteLine(a+x),10);
26
27 Konsol.ReadLine();
28 }
29 }
3. Deklarasi kelas koleksi
Sebelum kita mendeklarasikan sebuah Daftar dan memberikan nilai awal pada daftar tersebut, kita harus menulis seperti ini:
lihat sourceprint?1 Daftar
2 daftar.Tambahkan("a一");
3 daftar.Tambahkan("b二");
4 daftar.Tambahkan("c三");
Tidak perlu sekarang, tulis saja
lihat cetakan sumber?1 Daftar
2 "pasti", "Oke"
3};
4. Operasi pada setiap item kelas koleksi
Untuk mengolah item dalam koleksi satu per satu, kita perlu menulis seperti ini:
lihat sourceprint?1 foreach (item string dalam daftar)
2 {
3 Konsol.WriteLine(item);
4}
Itu tidak perlu sekarang, tidak apa-apa
lihat sourceprint?1 list.ForEach(a => Console.WriteLine(a));
Kode ini jauh lebih bersih.
5. menggunakan == coba akhirnya
Untuk melepaskan sumber daya setelah selesai menggunakannya, kita sering menggunakan menggunakan. Menggunakan pada dasarnya hanyalah sebuah sintaks gula untuk mencoba fiannaly. Misalnya
lihat sourceprint?1 StreamWriter sw = null;
2 coba
3 {
4 sw = StreamWriter baru("d:abc.txt");
5 sw.WriteLine("tes");
6}
7 akhirnya {
8 if(sw!= null) sw.Dispose();
9}
Kode di atas dapat disederhanakan menjadi:
lihat sourceprint?1 menggunakan (var sw = new StreamWriter("d:abc.txt")) {
2 sw.WriteLine("tes");
3}
6. lucu var
Tidak perlu menulis tipe yang dideklarasikan untuk arti var. Kompilator akan menentukan tipenya berdasarkan penugasan selanjutnya ke var. Setelah tipe var dikonfirmasi, tipe tersebut tidak dapat diubah variabel dan tidak dapat digunakan sebagai bidang.
Misalnya:
lihat sourceprint?1 var writer = new StreamWriter(path);
tampilan sourceprint?1 for(var i=0;i<100;i++){}
7. Evolusi tanda tanya
Tanda tanya lama + titik dua
lihat cetak sumber?1 var b = 3;
2 var a = b > 9?b.ToString():”0”+b;
Bayi baru mempunyai dua tanda tanya??, artinya jika variabel di sebelah kiri adalah nol, maka nilainya adalah variabel di sebelah kanan, sebaliknya maka nilai variabel di sebelah kiri.
lihat sourceprint?1 string a = null;
2 var b = a??"";
8. Gula sintaksis untuk instantiasi tipe
lihat sourceprint?1 kelas publik Abc
2 {
3 ID int publik { dapatkan;
4
5 string publik Nama { dapatkan; }
6
7 Url string publik { dapatkan;
8}
Kami tidak mendeklarasikan konstruktor untuk kelas di atas, tetapi kami dapat membuat instance seperti berikut
lihat cetak sumber?1 public static void Utama(string[] args) {
2 var abc = Abc baru{
3ID=1,
4 Nama = "yukaizhao",
5 Url=" http://yukaizhao.cnblogs.com/ "
6};
7}
9. metode penyuluhan yang legendaris
Metode ekstensi diperkenalkan di C# 3.5. Kita dapat menambahkan metode instan ke kelas tanpa mengubah kode sumber kelas. Ini sangat berarti. Esensinya juga merupakan implementasi gula sintaksis.
Misalnya, kita memperluas kelas String dengan metode IsNumber:
lihat sourceprint?01 kelas statis publik StringExt {
02 Regex pribadi statis regexNumber = Regex baru(" \d +");
03 bool publik statis IsNumber (input string ini)
04 {
05 jika (string.IsNullOrEmpty(masukan))
06 {
07 mengembalikan salah;
08 }
09 kembalikan regexNumber.IsMatch(input);
10}
11 }
Kita dapat memanggil metode ini pada instance String
lihat cetak sumber?1 var abc = “123”;
2 var isNumber = abs.IsNumber();
10. Gunakan kelas anonim
lihat cetak sumber?1 var a = baru {
2 ID = 1,Nama=”yukaizhao”,BlogUrl=”http://www.cnblogs.com/yukaizhao/”
3};
Kelas anonim berguna saat mengembalikan data kueri di LINQ ke sql atau kerangka entitas.
Jika Anda memiliki lebih banyak gula sintaksis, silakan bagikan. Pada saat yang sama, saya berharap semua orang dapat menikmati gula sintaksis, karena dapat memberikan kenyamanan bagi kita. Tolong jangan mencemoohnya, dan tidak perlu mencemoohnya.
http://www.cnblogs.com/yukaizhao/archive/2010/05/25/csharp-Syntactic-sugar.html