منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : Inline out variables in C# 7.0
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم
((رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقهوا قولي))


 Inline out variables in C# 7.0

كما نعلم أنه في الاصدارات السابقة من لغة C#.NET توجد كلمة مفتاحية باسم (out) ومن خلالها نستطيع اسناد قيمة الى متغير من متغير موجود في نطاق آخر كما في المثال التالي:

PHP كود :
using static System.Console;

namespace 
InlineOutVars
{
 
   class Program
    
{
 
       static void Main(string[] args)
 
       {
 
           int output;
 
           Method(out  output);
 
           WriteLine(output);
 
           ReadKey();
 
       }

 
       private static void Method(out int x)
 
       {
 
           x 5;
 
       }
 
   }




في المثال أعلاه الناتج سيكون (5) وهنا تتسائل: لماذا الناتج (5)؟ فنحن لم نقم باسناد قيمة للمتغير (output) في الدالة الرئيسية. هنا سأجيبك: أنه هذه هي وظيفة الكلمة المفتاحية (out) فهي تقوم بربط المتغير في الدالة الرئيسية بالمتغير في الدالة الفرعية لنفس العنوان في الذاكرة لذا سيكون الناتج (5).



طيب الى هنا فهمنا وظيفة الــ (out). ما علاقة المثال بموضوعنا؟



العلاقة أنه في الاصدار الجديد من لغة C# 7.0 قاموا باضافة بعض التحسينات للـــ (out) بجعلها 

Inline out variable بمعنى أنه تستطيع تعريف متغير وجعلها out في نفس سطر الاستدعاء للدالة أي تعريفها كـــ (Argument out variable).



نفس المثال أعلاه بالطريقة الجديدة:

PHP كود :
using static System.Console;

namespace 
InlineOutVars
{
 
   class Program
    
{
 
       static void Main(string[] args)
 
       {
 
           Method(out int output);
 
           WriteLine(output);
 
           ReadKey();
 
       }

 
       private static void Method(out int x)
 
       {
 
           x 5;
 
       }
 
   }



في المثال الاعلاه الاختلاف بسيط جدا، كما تلاحظ أنه عند استدعائنا للدالة (Method) قمنا في نفس الدالة بتعريف المتغير وليس في سطر آخر.

ومن الملاحظ أنه المتغير المعرف داخل الدالة يعامل معاملة Local Variable بمعنى ستكون معرفة داخل النطاق أي داخل نطاق دالة (Main).

الفوائد/

  1. يعامل كــ Local Variable.
  2. تقليل عدد الاسطر البرمجية.
  3. سهولة وسرعة في الاداء.
تحياتي لكم.
جزاك الله خير اخي سجاد
اسأل الله العلي القدير ان يغفر لك و لوالديك . اللهم آمين
يعطيك العافية
مشكور يالطيب ،، جزاك الله خير
بارك الله فيك اخي سجاد , وجزيت خيراً
جزاك الله خير اخي سجاد