C# / الأساسي: البرامج ذات الأنواع وعقود الكائنات / الدرس 1
أدوات C# ونموذج البرنامج
ميز اللغة والمترجم والتنفيذ والمكتبات أثناء بناء تطبيق طرفية قابل للتكرار.
في هذه الصفحة
أهداف الدرس
- شرح SDK والإطار المستهدف وإصدار اللغة وCLR.
- قراءة نقطة بداية طرفية كاملة.
- تسجيل مدخلات البناء وتفسير التشخيص حسب المرحلة.
اللغة والتنفيذ طبقتان منفصلتان
تحدد C# الأنواع والتعابير والتحكم. يترجم المترجم المصدر إلى تجميعة بلغة وسيطة وبيانات وصفية. تحمل CLR الشيفرة المدارة وتنفذها غالبا بترجمة فورية؛ والنشر المسبق الترجمة إعداد صريح آخر. توفر المكتبات Console والمجموعات والمهام والإدخال. ولا تتطابق الطبقات مع إطار ASP.NET. قد يحمل الجهاز عدة إصدارات جنبا إلى جنب؛ لذا يفسر سجل الأدوات الفعلي نتيجة لا يفسرها اسم الإطار وحده.
تضم SDK أدوات التطوير بينما يحدد الإطار المستهدف سطح المكتبة والتنفيذ المتوقع. قد توجد عدة SDK وبيئات تنفيذ. سجل المستخدمة فعلا ولا تستنتجها من الهدف أو اسم المحرر. يبقى النداء إلى المكتبة عملية محددة حتى لو غير القالب شكل المصدر؛ ليست تعليمات المستوى الأعلى تفسيرا نصيا أثناء التشغيل.
للمصدر الكامل مسار بداية
يستخدم المثال الأول صنف Program وطريقة Main ساكنة صريحة، فتظهر البداية دون مصدر مولد من قالب. يسهل using أسماء أنواع مساحة الأسماء؛ ولا ينزل حزمة ولا ينشئ كائنا. تكتب Console.WriteLine النص ونهاية سطر. استيراد مساحة الأسماء مسألة أسماء داخل البرنامج، بينما استعادة الحزم مسألة اعتماد وبناء مختلفة تماما.
تدعم القاعدة تعليمات المستوى الأعلى كبداية بديلة، لكنها لا تلغي الترجمة ولا تنشئ بدايات مستقلة متعددة. ضع الأمثلة الكاملة في مشاريع مؤقتة منفصلة لأن جمعها قد يكرر Program أو Main. يسمح عزل كل برنامج بفحص نتيجته دون تضارب مع نقطة بداية مثال آخر أو إعداد مشروع كبير.
using System;
internal static class Program
{
private static void Main()
{
Console.WriteLine("C# ready");
}
}
C# ready
تستدعي Main مكتبة المنصة دون عمل خلفي أو اتصال خارجي.
جعل عقد المشروع صريحا
تستخدم الدورة net10.0 وLangVersion14.0 وتفعيل nullable. للأدوات والتنفيذ تصحيحات مستقلة. لا تختر latest أوpreview لإسكات خطأ؛ فقد يغير قبول الميزات بين الأجهزة. تستطيع global.json اختيار SDK للمستودع، ولا ينبغي لدرس تغيير الافتراضات العامة سرا. تجنب تغيير سياسة اختيار SDK على جهاز المستخدم من أجل تجربة صغيرة؛ سجل الإعداد داخل بيئة الاختبار المعزولة.
لا تحتاج أمثلة المكتبة حزم NuGet خارجية. يستطيع مشروع تحقق معزول مسح المصادر واستخدام حزم الإطار المرفقة. جلب الحزم الفعلية فعل اعتماد مستقل بمصادر موثوقة وإصدارات مسجلة. ولا يثبت نجاح الجلب صحة البرنامج. الاعتماد على حزم الإطار المرفقة يجعل تحقق الأمثلة قابلا للتكرار دون مصادر NuGet غير موثوقة أو تحديثات عرضية.
تتبع الحالة عبر التعليمات الكاملة
يحمل المتغير قيمة من نوعه المعلن. يبدأ count باثنين ثم يستبدل الإسناد قيمته بخمسة وتقرأ الاستيفاء النتيجة. يغير الإسناد التخزين ولا يقرر مساواة رياضية. تلائم العمليات الصغيرة النوع دون تجاوز. يمكن تسجيل قيمة count بعد كل تعليمة في جدول تتبع؛ تأتي النتيجة من القيم وترتيب العمليات لا من تفاصيل تخزين تخمينية.
لا يحتاج الشرح ادعاء خانة مكدس فعلية أو تعليمة آلة لكل سطر. يحسن المترجم والتنفيذ التخزين مع حفظ السلوك الملحوظ المحدد. وستميز الدروس نسخ القيمة من مرجع الكائن المشترك، وهو أنفع من تخمين العناوين. يحافظ التحسين الصحيح على الآثار الموعودة حتى عندما يحذف تخزينا فعليا لا يحتاجه السلوك.
using System;
int count = 2;
count = count + 3;
Console.WriteLine($"count={count}");
count=5
يحسب برنامج المستوى الأعلى خمسة قبل تنسيق السطر.
استخدام التشخيص كدليل
يخص خطأ الصياغة والنوع الترجمة؛ وقد يظهر غياب تجميعة أو تنفيذ عند التحميل؛ والنتيجة الخاطئة فشل سلوك. تكشف تحذيرات nullable تعارض عقد محتمل حتى عند نجاح البناء. ابدأ بأول تشخيص مناسب ولا تخف فئة كاملة لتجميل الخرج. ابدأ بالتشخيص الأول لأن أخطاء لاحقة قد تكون نتيجة له؛ لا تعد نجاح الإطلاق إثباتا لصحة الحساب.
أرفق المصدر الصغير وخصائص المشروع وإصدار SDK والأمر والمدخل والمتوقع والفعلي. تحقق من أن التنفيذي نتاج آخر بناء ناجح. قد يجعل أثر قديم أو مشروع بداية آخر التعديل الصحيح يبدو بلا أثر. تساعد مقارنة المتوقع بالفعل مع المدخل والأمر الدقيق على التمييز بين خلل المصدر واختيار أثر بناء آخر.
الأخطاء الشائعة وإصلاحها
تبدو ميزة لغة غير مدعومة.
- لماذا يحدث؟
- يختار المشروع لغة أوSDK أخرى.
- كيف تصلحه؟
- افحص الخصائص والأدوات قبل تغيير الصياغة.
- كيف تتجنب تكراره؟
- سجل أساسا صريحا.
تتعارض أمثلة مستقلة عند جمعها.
- لماذا يحدث؟
- تعرف بدايات أو أنواعا مكررة.
- كيف تصلحه؟
- استخدم مشروعا مؤقتا لكل برنامج.
- كيف تتجنب تكراره؟
- عامل كل مثال كأمر مستقل.
يشغل البناء الناجح سلوكا قديما.
- لماذا يحدث؟
- استُخدم مشروع بداية أوأثر قديم.
- كيف تصلحه؟
- تحقق من المسار وأعد المشروع المقصود.
- كيف تتجنب تكراره؟
- احفظ أمر البناء مع التشغيل.
اختبر فهمك
1. توقع المثال الثاني إذا بدأ count بأربعة وأضاف سبعة وحدد الافتراضات.
اعرض الحل المشروح
تخزن التهيئة أربعة ويحسب الإسناد أحد عشر ويطبع الاستيفاء count=11 ونهاية سطر. القيم قابلة للتمثيل في int والتعليمات مرتبة دون عنوان منصي أوتحسين أوإدخال. تغير صياغة المستوى الأعلى عرض البداية لا دلالة الحساب.
2. لماذا لا يكفي TargetFramework net10.0 لتسجيل البناء؟
اعرض الحل المشروح
يسمي عائلة الهدف لاSDK الدقيقة أوتجاوز اللغة أوالاعتمادات أوالإعداد أوالمولدات أوالنشر المنصي. سجل الخصائص واختيارSDK أيضا. وفي أمثلة المكتبة وحدها تقلل المصادر المعطلة والمشروع المعزول المتغيرات غير المتعلقة.
أهم ما تعلمته
- اللغة والأدوات والتنفيذ وأطر التطبيق طبقات مختلفة.
- حدد مدخلات المشروع المهمة ولا تفترض الأحدث.
- نجاح البناء وصحة النتيجة ادعاءان منفصلان.