أولاً، أريد أن أعلن أن كلمة "سكر نحوي" ليست بأي حال من الأحوال مصطلحًا مهينًا، فهي طريقة مريحة للكتابة، ويمكنها أيضًا أن تساعدنا تحسين كفاءة التطوير والترميز، من حيث الأداء لن تكون هناك خسارة. وهذا يجعل مطوري جافا يشعرون بالغيرة، هاها.
1. الملكية المبسطة
في وقت سابق أعلنا الملكية مثل هذا
عرض المصدر؟ 01 سلسلة خاصة _myName؛
02
03 السلسلة العامة MyName
04
05 {
06
07 احصل على {return _myName}؛
08
09 مجموعة { _myName = value }
10
11 }
ليس من المنطقي تقديم بيان قطع ملفات تعريف الارتباط مثل هذا، لذلك قام مصممو C# بتسليم عمل قطع ملفات تعريف الارتباط هذا إلى المترجم للقيام بذلك نيابةً عنا
عرض المصدر؟ 1 سلسلة عامة MyName { get }
بالطبع، لن نضحي بالمرونة، يمكننا وضع قيود الوصول للحصول عليها أو تعيينها بشكل منفصل، على سبيل المثال
عرض المصدر؟ 1 سلسلة عامة MyName { get؛
2. طريقة كتابة العمولة بعد تغييرين
في .net 1.1، كان علينا أن نعلن عن الطريقة قبل استخدامها في المفوض. بعد .net 2.0، يمكننا استخدام المفوضين المجهولين، الأمر الذي لا يبسط الكتابة فحسب، بل يسمح لك أيضًا بالوصول إلى المتغيرات داخل النطاق في المفوضين المجهولين لاحقًا؛ ، رام الآن بعد أن أصبحت التعبيرات متاحة، أصبحت الكتابة أسهل.
عرض المصدر؟ 01 فئة MyClass
02 {
03 المفوض العام void DoSomething(int a);
04
05 //تحديد طريقة التفويض
06 الفراغ الخاص DoIt(int a) {
07 Console.WriteLine(a);
08 }
09
10 HowtoDo(DoSomething doMethod,int a) { باطلة خاصة
11 دو الطريقة (أ)؛
12}
13
14 الفراغ الثابت العام الرئيسي(string[] args) {
15 MyClass mc = new MyClass();
16 //اتصل بالطريقة المحددة للمفوض
17 mc.HowtoDo(new DoSomething(mc.DoIt), 10);
18 إنت س = 10؛
19 //استخدم التفويض المجهول
20 mc.HowtoDo(delegate(int a){
21 Console.WriteLine(a + x);
22}،10)؛
ثلاثة وعشرين
24 //استخدم تعبير لامدا
25 mc.HowtoDo(a=>Console.WriteLine(a+x),10);
26
27 Console.ReadLine();
28 }
29 }
3. إعلان فئة المجموعة
قبل أن نعلن عن القائمة ونخصص لها قيمة أولية، كان علينا أن نكتب على النحو التالي:
عرض المصدر؟1 List<string> list = new List<string>();
2 list.Add("a一");
3 list.Add("ب二");
4 list.Add("c三");
لا داعي الآن، فقط أكتبها
عرض المصدر؟1 List<string> list = new List<string> {
2 "تعريف"،"موافق"
3}؛
4. العمليات على كل عنصر من فئة التجميع
من أجل معالجة العناصر الموجودة في المجموعة واحدا تلو الآخر، نحتاج إلى كتابة مثل هذا:
عرض المصدر؟ 1 foreach (عنصر السلسلة في القائمة)
2 {
3 Console.WriteLine(item);
4}
ليس من الضروري الآن، هذا جيد
عرض المصدر؟1 list.ForEach(a => Console.WriteLine(a));
الكود أنظف كثيرًا.
5. باستخدام == حاول أخيرا
من أجل تحرير الموارد عند الانتهاء من استخدامها، غالبًا ما نستخدم استخدامًا وهو في الأساس مجرد سكر بناء لمحاولة fiannaly. على سبيل المثال
عرض المصدر؟1 StreamWriter sw = null;
2 حاول
3 {
4 sw = new StreamWriter("d:abc.txt");
5 sw.WriteLine("اختبار");
6}
7 أخيرا {
8 if(sw!= null) sw.Dispose();
9}
يمكن تبسيط الكود أعلاه إلى:
عرض المصدر؟1 باستخدام (var sw = new StreamWriter("d:abc.txt")) {
2 sw.WriteLine("اختبار");
3}
6. لطيف فار
ليست هناك حاجة لكتابة النوع المعلن لمعنى var. سيحدد المترجم نوعه بناءً على التعيين اللاحق لـ var. بمجرد تأكيد نوع var، لا يمكن استخدامه إلا كمحلي متغير ولا يمكن استخدامه كحقل.
على سبيل المثال:
عرض المصدر؟1 varwriter = new StreamWriter(path);
عرض المصدر؟1 لـ(var i=0;i<100;i++){}
7. تطور علامات الاستفهام
علامة الاستفهام القديمة + القولون
عرض المصدر؟1 var b = 3;
2 var a = b > 9?b.ToString():”0”+b;
المولود الجديد لديه علامتي استفهام؟؟، مما يعني أنه إذا كان المتغير الموجود على اليسار خاليًا، فإن القيمة هي المتغير الموجود على اليمين، وإلا فهي قيمة المتغير الموجود على اليسار.
عرض المصدر؟ 1 سلسلة a = null;
2 فار ب = أ؟؟"";
8. السكر النحوي لإنشاء مثيل للنوع
عرض المصدر؟ 1 فئة عامة ABC
2 {
3 معرف صحيح عام {احصل على؛
4
5 اسم السلسلة العامة {احصل على؛
6
7 عنوان URL للسلسلة العامة {get؛
8}
لم نعلن عن منشئ للفئة المذكورة أعلاه، ولكن يمكننا إنشاء مثيل لها كما يلي
عرض المصدر؟1 الفراغ الثابت العام الرئيسي(string[] args) {
2 فار اي بي سي = جديد اي بي سي {
3ID=1،
4 الاسم = "يوكايزهاو"،
5 عنوان URL = " http://yukaizhao.cnblogs.com/ "
6}؛
7}
9. طرق التمديد الأسطورية
تم تقديم طرق الامتداد في الإصدار C# 3.5. يمكننا إضافة طرق المثيل إلى الفصل دون تعديل الكود المصدري للفئة. جوهرها هو أيضًا تنفيذ السكر النحوي.
على سبيل المثال، نقوم بتوسيع فئة السلسلة باستخدام طريقة IsNumber:
عرض المصدر؟ 01 فئة ثابتة عامة StringExt {
02 static Private Regex regexNumber = new Regex(" \d +");
03 المنطق العام الثابت IsNumber (إدخال هذه السلسلة)
04 {
05 إذا (string.IsNullOrEmpty(input))
06 {
07 إرجاع كاذب؛
08 }
09 إرجاع regexNumber.IsMatch(input);
10}
11 }
يمكننا استدعاء هذه الطريقة على مثيل السلسلة
عرض المصدر؟1 var abc = “123”;
2 var isNumber = abs.IsNumber();
10. استخدام فئات مجهولة
عرض المصدر؟1 var a = new {
معرف 2 = 1، الاسم = "yukaizhao"، BlogUrl = "http://www.cnblogs.com/yukaizhao/"
3}؛
تعتبر الفئات المجهولة مفيدة عند إرجاع بيانات الاستعلام في linq إلى SQL أو إطار عمل الكيان.
إذا كان لديك المزيد من السكر النحوي، يرجى مشاركته. في الوقت نفسه، أتمنى أن يستمتع الجميع بالسكر النحوي، لأنه يمكن أن يجلب لنا الراحة، من فضلك لا تسخر منه، ولا داعي للسخرية منه.
http://www.cnblogs.com/yukaizhao/archive/2010/05/25/csharp-Syntactic-sugar.html