اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

في المثالين الهدف هو التنسيق النصي:

1. نقوم بوضع الرمز @ للتخلص مما يسمى ب Escape Character، مثل backslash \

قومي بتجريب هذا المثال في بيئة سي شارب عندك:

Console.WriteLine("C:\Program Files\Microsoft");

ستلاحظين ان بيئة سي شارب تعطي خطأ هنا، لأن backslash تعتبر escape character، بمعنى انها في هذا المثال لا يقصد بها الرمز \ وإنما تؤخذ كرمز واحد مع الحرف الذي يليها:

\P

لاتعني شيء بالنسبة لسي شارب، لذلك يظهر عليها الخطأ

\M

أيضا لا تعني شيء بالنسبة لسي شارب، لذلك يظهر عليها الخطأ ايضا

ولكي تتضح الصورة اكثر، نلاحظ المثال التالي:

Console.WriteLine("C:\Program Files\Microsoft\n");

سنلاحظ هنا ان سي شارب لم تعترض على n\ لانها تعني سطر جديد! أي ان سي شارب قامت بالنظر إلى backslash وشاهدت الحرف الذي يليها، واذا لم يكن من ضمن الرموز المعرفة في سي شارب، فسيظهر الخطأ.

طبعا لحل هذه المشكلة، نقوم بإضافة backslash اضافي، كما يلي:

Console.WriteLine("C:\\Program Files\\Microsoft\n");

الآن سي شارب لن تعترض على استخدم backslash بهذه الطريقة.

لكن يمكننا التخلص من هذا الـ backslash الاضافي، فقط باخبار سي شارب ذلك، عن طريق وضع الرمز @ بداية النص:

Console.WriteLine(@"C:\Program Files\Microsoft");

الآن ايضا سي شارب لن تعترض.

 

2. نقوم بوضع الرمز $ لسهولة التنسيق النصي ضمن سي شارب. مثلا 

Console.WriteLine("The sum of " + 4 + " and " + 5 + " = " + 9 +"");

هذه طريقة التنسيق التقليدية في سي شارب. ونلاحظ انها صعبة الفهم والتتبع خاصة في حال وجود اخطاء، لذلك افترضت سي شارب، ان نقوم بعمل تنسيق نصي مناسب اكثر، وهو بدل ان نضع الرقم 4 مباشرة بهذا الشكل، نضع رمز او مؤشر مكانه، ثم نقوم باستبدال هذا الرمز او المؤشر بالرقم 4 لاحقاً كما يلي:

Console.WriteLine("The sum of {0} and {1} = {2}", 4, 5, 9);

الآن نلاحظ ان التنسيق اصبح اكثر وضوحاً! وسيتم استبدال الرمز {0} بالرقم 4 لاحقاً.

يمكن استخدام هذا النمط من التنسيق خارج جملة Console.WriteLine من خلال استخدام الدالة string.Format

var result = string.Format("The sum of {0} and {1} = {2}", 4, 5, 9);

لكن مؤخراً قامت سي شارب باختصار هذه الصيغة ايضا كونها لا زالت تحمل بعض التعقيد او الغموض، فمثلا لو أردت ان اعرف ما هي القيمة التي سيتم استبدالها عند الرمز {2} سأقوم بعد المتغيرات 4 و 5 حتى اعثر على 9! لكن ماذا لو كان لدي 20 متغير او اكثر، هنا سيصعب تتبع البيانات!

الحل كان باستخدام الرمز $ والذي يسبق التنسيق النصي، مع هذا الرمز سأتخلص من الدالة string.Format اولاً، ثم بدل ان أضع {2} وأقوم لاحقا باستبدالها بالرقم 9، سأقوم بوضع 9 مباشرة ضمن القوسين كما يلي:

var result = $"The sum of {4} and {5} = {9}";

طبعاً في جميع الحالات النتيجة ستكون واحدة، لكن الهدف هو تسهيل العمل على المطور. 

لذلك تسمى جميع هذه الاختصارات والتكتيكات ب Syntactic Sugar او التجميل اللغوي، لانها فعليا لا تؤثر على المعنى ولكن على الشكل فقط!

 

بالتوفيق،،،

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...