البرمجة

تحسين طريقة الطباعة في C# باستخدام تجاوزات ToString()

في البداية، يجب أن نفهم أن السبب وراء الحصول على إخراج فضاء الأسماء والكائن (namespace.object) عند طباعة قيمة من القاموس في لغة البرمجة C# يعود إلى النموذج الافتراضي للطباعة لكائنات. عندما تقوم بطباعة كائن، يتم استخدام الأسلوب ToString() لتحويل الكائن إلى سلسلة نصية للعرض. إذا لم يتم تجاوز أسلوب ToString() في الكائن، سيتم استخدام الإصدار الافتراضي الذي يعود بفضاء الأسماء واسم الكائن.

في المثال الذي قدمته، يظهر أن الكائن elementDO لا يحتوي على تجاوز لأسلوب ToString()، لذا يتم استخدام الإصدار الافتراضي. لتحقيق السلوك المرغوب عند الطباعة، يجب تجاوز أسلوب ToString() في الكائن elementDO ليعيد النص الذي تريد رؤيته عند الطباعة.

للقيام بذلك، يمكنك إضافة تجاوز لأسلوب ToString() في الكائن elementDO بالشكل التالي:

csharp
namespace MoleCalculator { public class elementDO { public int AtomicNumber { get; set; } public string Symbol { get; set; } public string Name { get; set; } public decimal AtomicWeight { get; set; } public override string ToString() { return $"{Name} ({Symbol}) - Atomic Number: {AtomicNumber}, Atomic Weight: {AtomicWeight}"; } } }

بهذا التجاوز، ستحصل على إخراج يحتوي على المعلومات التي ترغب في رؤيتها عند الطباعة. عند تشغيل الكود الخاص بك بعد هذا التعديل، ستحصل على إخراج يشبه الناتج التالي:

sql
Hydrogen (H) - Atomic Number: 1, Atomic Weight: 1.007825

هذا الناتج سيكون أكثر تفصيلاً وملاءمة لاحتياجات الطباعة التي ترغب في تحقيقها.

المزيد من المعلومات

بالطبع، دعونا نوسع على الحل السابق ونتحدث عن بعض المفاهيم الأساسية في لغة البرمجة C# وكيف يمكن تحسين الكود لجعله أكثر فهمًا وفعالية.

أولاً وقبل كل شيء، يجب أن نتعرف على مفهوم التجاوز (Override) في C#. عندما نقوم بتجاوز أسلوب، نقوم بتوفير نسخة جديدة من هذا الأسلوب في الفئة المشتقة، وهذا يسمح لنا بتعديل سلوك الأسلوب بما يتناسب مع احتياجات الفئة المشتقة.

في المثال السابق، استخدمنا تجاوز لأسلوب ToString() لنحسن الإخراج عند الطباعة. لكن هناك مزيد من الأمور التي يمكن تحسينها.

  1. استخدام StringBuilder:
    في حالة تكوين سلسلة نصية طويلة أو معقدة، يفضل استخدام StringBuilder بدلاً من الاتصال المتكرر لعمليات الإضافة. هذا يساعد على تحسين أداء البرنامج.

    csharp
    public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append($"{Name} ({Symbol}) - Atomic Number: {AtomicNumber}, Atomic Weight: {AtomicWeight}"); return sb.ToString(); }
  2. التعامل مع قيم null:
    يمكنك تحسين الكود ليتعامل بشكل أفضل مع حالة عدم وجود قيمة (null)، مما يزيد من مرونة البرنامج. يمكنك تحقيق ذلك عن طريق التحقق من القيم المحتملة قبل الطباعة.

    csharp
    public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append($"{Name ?? "Unknown"} ({Symbol ?? "N/A"}) - Atomic Number: {AtomicNumber}, Atomic Weight: {AtomicWeight}"); return sb.ToString(); }
  3. استخدام محرر النصوص الوسيطة (Interpolated Strings):
    في C# 6.0 فما فوق، يمكنك استخدام تعبيرات التركيب لتبسيط السلسلة النصية.

    csharp
    public override string ToString() { return $"{Name ?? "Unknown"} ({Symbol ?? "N/A"}) - Atomic Number: {AtomicNumber}, Atomic Weight: {AtomicWeight}"; }

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر