اكتشف كيف ستحسن التغييرات القادمة شفرتك وتجعل حياتك كمطور أسهل قليلاً.

تم تسريب تفاصيل معاينة C # 12 المرتقبة للغاية ، مما يعطي نظرة خاطفة على الميزات القادمة التي يجب أن تحدث ثورة في اللغة. هذه الميزات تبشر بتحسين قابلية قراءة الكود وتحسين الأداء وإطلاق العنان للقدرات المتقدمة للغة.

تعبيرات التبديل المحسّنة

قدم C # 8 تعبيرات التبديل الأساسية تتيح لك التعبير عن المنطق الشرطي المعقد بإيجاز وبصيغة يمكن قراءتها. يأخذ C # 12 هذا الأمر إلى أبعد من ذلك من خلال تقديم بناء جملة جديد لمطابقة الأنماط لتعبيرات التبديل ، مما يجعل كتابة كود معبر ومختصر أسهل.

ضع في اعتبارك مقتطف الشفرة التالي.

فار النتيجة = obj يُحوّل
{
int أنا متى أنا> 0 => "إيجابي",
int أنا متى أنا < 0 => "سلبي",
_ => "صفر"
};

يستخدم هذا الرمز تعبيرات التبديل لتحديد ما إذا كان العدد الصحيح إيجابي, سلبي، أو صفر. في C # 12 ، يمكنك تبسيط هذه الشفرة بشكل أكبر باستخدام بناء جملة مطابقة النمط الجديد:

فار النتيجة = obj يُحوّل
{
> 0 => "إيجابي",
< 0 => "سلبي",
_ => "صفر"
};

يسمح لك بناء الجملة هذا بحذف ملف متى الكلمة الأساسية واستخدام العوامل العلائقية مباشرة في تعبير التبديل.

instagram viewer

المنشئون الأساسيون للفئات والتراكيب

يمكنك الآن إنشاء المنشئات الأساسية في أي فصل أو هيكل (بديل فئة خفيفة الوزن). باستخدام الباني الأساسي ، يمكنك إضافة معلمات إلى إعلان الفئة واستخدام هذه القيم داخل نص الفصل.

قدم C # 9 المنشئات الأولية كجزء من بناء الجملة الموضعي للسجلات. يمتد C # 12 إلى جميع الهياكل والفئات.

يمكنك وضع المعلمات بعد اسم النوع بين قوسين كما هو موضح أدناه:

عام فصل طالب(int بطاقة تعريف، خيط الاسم ، I عدد لا يحصى <عدد عشري> الدرجات)
{
عامطالب(int بطاقة تعريف، خيط اسم): هذا(معرف ، اسم ، عدد لا يحصى. فارغة <عدد عشري>()) { }
عامint معرف => معرف ؛
عامخيط اسم { يحصل; تعيين; } = الاسم. تقليم()؛
عامعدد عشري المعدل التراكمي => درجات. أي()؟ درجات. متوسط(): 4.0م ؛
}

تقع معلمات المُنشئ الأساسي في النطاق عبر الجسم الكامل لنوع التصريح. يمكنك إعداد الخصائص أو الحقول أو يمكنك أيضًا استخدامها في الأساليب أو الوظائف المحلية كمتغيرات. يمكنك أيضًا توفير هذه المعلمات لمنشئ أساسي.

تحسينات السلاسل المحرف

كانت السلاسل المقحمة موجودة منذ C # 6. في C # 12 ، يمكنك الآن إنشاء قيم ديناميكية للسلاسل باستخدام تعبيرات معقدة.

int أنا = 5;
خيط الإخراج = $ "قيمة i هي {أنا}، ومربعها {أنا * ط}.";
وحدة التحكم. اكتب (الإخراج) ؛

يطبع هذا الرمز "قيمة i هي 5 ومربعها 25".

استخدام التوجيهات لأنواع إضافية

باستخدام C # 12 ، يمكنك استخدام توجيه استخدام الاسم المستعار لاسم مستعار من أي نوع ، وليس فقط الأنواع المسماة. يمكنك إنشاء أسماء مستعارة دلالية لجداول أو مصفوفات أو مؤشرات أو أنواع أخرى غير آمنة.

وفيما يلي بعض الأمثلة على ذلك:

استخدام القياس = (خيط الوحدات ، int مسافة)؛
استخدام عدد الوحدات = int?;
مثال على استخدام الأسماء المستعارة:
عامفارغعملية حسابية(قياس القياس)
{
// طريقة الجسم
}

تحسينات تعبير لامدا

تعمل C # 12 على تمكين تعبيرات lambda من خلال السماح لك بتحديد القيم الافتراضية للمعلمات. بناء الجملة مطابق لتلك الخاصة بالمعلمات الافتراضية الأخرى:

على سبيل المثال، (int incrementTo = 5) => زيادة إلى + 1 يعيّن القيمة الافتراضية 5 للمعلمة incrementTo ، والتي سيستخدمها استدعاء lambda إذا لم تمررها بقيمة.

فار incrementWithDefault = (int incrementTo = 5) => زيادة إلى + 1;
incrementWithDefault () ، // 6
incrementWithDefault (9); // 10

إلى جانب ذلك ، تم إدخال العديد من التحسينات الأخرى على تعبيرات لامدا لجعلها أكثر فعالية.

على سبيل المثال:

  • يمكنك الآن إنشاء تعبيرات أكثر تعقيدًا داخل وظائف lambda.
  • يمكنك الآن تحويل تعبيرات lambda إلى أشجار تعبير تعمل على تبسيط الاستعلامات المعقدة وتحسين الأداء.

تيارات غير متزامن

يمكنك التكرار من خلال مصادر البيانات غير المتزامنة باستخدام ملف تيارات غير متزامنة ميزة C # 12. مكرر جديد -ننتظر للجميع—يساعدك على التكرار عبر مجموعة من البيانات غير المتزامنة:

انتظرforeach (فار غرض فيGetItemsAsync())
{
وحدة التحكم. WriteLine (البند.قيمة);
}

C # 12: إحداث ثورة في الكود بميزات جديدة مثيرة

تحسباً لـ C # 12 ، يمكنك توقع تحديث يغير اللعبة بميزات جديدة ومثيرة. تشير هذه التطورات ، مثل تعبيرات المحولات المحسّنة والمنشئات الأولية والتحسينات على تعبيرات lambda ، إلى تركيز قوي على بساطة الكود والمرونة والأداء.

تستعد C # 12 لتقديم قفزة كبيرة إلى الأمام ، مما يتيح لك كتابة رمز أكثر تعبيرًا وفعالية وقوة.