تعلم كيفية البرمجة ب #C


الدرس: استخدم .NET Framework


الصفحة السابقة
كما ذكرنا سابقًا ، فإن .NET Framework هو صندوق أدوات ضخم يحتوي على الكثير من الطرق لإنشاء جميع أنواع التطبيقات.  
سنحتاج بانتظام إلى استخدام عناصر .NET Framework لإنشاء تطبيقاتنا. لذلك حان الوقت لتعلم كيفية التعامل معها!
دعنا نصل إلى صميم الموضوع.

استخدام using


سنستغل باستمرار قوة إطار عمل .NET . على سبيل المثال ، يمكننا أن نطلب منه أن يقدم لنا التاريخ الحالي.
للقيام بذلك ، سوف نستخدم التعليمات:

Console.WriteLine(DateTime.Now); 
ما يحدث هنا هو أننا نطلب من تطبيقنا عرض خاصية  Now الكائن DateTime . سنعود بالتفصيل بشأن الخصائص والكائنات في الدورة التدريبية التالية ، فكر في اللحظة التي تتوافق فيها ببساطة مع تعليمة تزودنا بتاريخ اللحظة.
يعطي :
c sharp .net framework
في الواقع ، للوصول إلى التاريخ الحالي ، نكتب عادة:

System.Console.WriteLine(System.DateTime.Now); 
لأن الكائنات DateTime و Console هي في مساحة الاسم " System" .
مساحة الاسم (باللغة الإنجليزية namespace ) تتوافق مع المكان الذي يتم فيه تخزين الأساليب والكائنات. تتميز الكلمات المفصولة بنقاط (.).
يشبه الدلائل إلى حد ما ، يمكننا القول أن ملف "DateTime" مخزّن في "System" في الدليل ، وعندما نريد الوصول إليه ، يجب أن نوفر الموقع الكامل للملف ، أي System.DateTime .
ومع ذلك ، بدلاً من كتابة المسار الكامل في كل مرة ، يمكن القول "حسنًا ، الآن ، كلما احتجت إلى الوصول إلى ميزة ، ابحث عنها في مساحة الاسم "System" . إذا كانت موجودة استخدمها " .
هذا يحدث بفضل التعليمات

using System; 
الذي تم إنشاؤه بواسطة Visual Studio Express في بداية الملف.
يخبر المترجم أننا سنستخدم using مساحة الاسم System على صفحتنا. وبالتالي ، لم يعد إلزامياً بادئة الوصول إلى  DateTime بـ"System" . إنه نوع من الاختصار.
للحفاظ على التشابه مع الدلائل والملفات ، يمكننا القول أننا أضفنا دليل "System" في المسار.
لتلخيص ، التعليمات:

System.Console.WriteLine(System.DateTime.Now); 
تعادل الإرشادات الاثنين:

using System; 
و

Console.WriteLine(DateTime.Now); 
مع العلم أنها ليست مكتوبة جنبا إلى جنب. بشكل عام ، نضع التعليمات using في رأس ملف .cs ، مثل ما فعله Visual Studio Express عندما قام بإنشاء الملف. التعليمات الأخرى هي أن يتم وضعها في المكان المناسب الذي نريد تنفيذه فيه.
إذا كانت " using System" مفقودة ، فإن الإكمال التلقائي لبرنامج Visual Studio Express لن يقترح الكلمة "DateTime" . إنها طريقة جيدة لإدراك أن إعلان استخدام مساحة الاسم مفقود.
لاحظ أنه في هذه الحالة ، إذا كان Visual Studio Express يتعرف على التعليمات ولكن لم يتم تضمين مساحة الاسم ، فإنه يقترح ذلك من خلال التأكيد على بداية كلمة "DateTime" بخط صغير أزرق وأبيض .
c sharp .net framework
يؤدي النقر بزر الماوس الأيمن فوق الكلمة إلى فتح قائمة منسدلة واختيار "Résoudre" واستيراد المطابق باستخدام تلقائيًا.
c sharp .net framework

مكتبة الفئة .NET


ستتاح لك الفرصة لاكتشاف أن .NET Framework يعج بمساحات الأسماء التي تحتوي على الكثير من الوظائف  بجميع أنواعها مما يتيح لك القيام بأي شيء وأي شيء. كهف علي بابا الحقيقي.
من بين العديد من وظائف .NET Framework ، لدينا طريقة تسمح لنا باستعادة المستخدم الحالي (بمعنى "مستخدم Windows " ) ، على سبيل المثال ، يمكننا استخدام التعليمات التالية:

System.Console.WriteLine(System.Environment.UserName); 
ما سيقوم بنشره:
c sharp .net framework
أو ، كما تعلم الآن ، يمكننا استخدام مشترك:

using System; 
و

Console.WriteLine(Environment.UserName); 
لإنتاج نفس النتيجة.
شيئًا فشيئًا ستتذكر الكثير من الإرشادات ومساحات الأسماء من إطار عمل .NET ولكن لا يمكن تخيل تذكر كل شيء. هناك وثائق تسرد كل ما يشكل إطار عمل .NET ، وهذا ما يسمى مكتبة MSDN . يمكن الوصول إليه على هذا العنوان: http://msdn.microsoft.com/en-us/library/.
على سبيل المثال ، وثائق الخاصية التي استخدمناها للتو على هذا العنوان .
لقد حددنا كهف علي بابا بكلمة ".NET Framework" . لنكون أكثر دقة ، فإن التعيين الدقيق لهذا الكهف هو: " .NET class library " . يتم استخدام كلمة ".NET Framework" عمومًا عن طريق إساءة استخدام اللغة (وقد لاحظت أنني نفسي أسيء استخدام اللغة!) وتمثل أيضًا مكتبة الفئة هذه. سنعود إلى ما هو الفئة في وقت لاحق بالضبط ، في الوقت الحالي ، يمكنك التفكير فيه كمكونات ؛ مكتبة مكونات.

مرجع assembly


هذا كل شيء ، نحن نعرف كيفية الوصول إلى .NET Framework .
لكن إلى جانب ذلك ، كيف يمكننا الوصول إلى وظائف .NET Framework دون طرح أي أسئلة على أنفسنا؟ كم هو السحري هذا الإطار؟ أين هو الكود الذي يمكن من استرداد تاريخ اليوم؟
سؤال حكيم. إذا فكرت في الأمر ، يجب أن يستغرق الأمر الكثير من التعليمات البرمجية لإرجاع تاريخ اليوم! بالفعل ، عليك أن تقرأها في ساعة نظام نظام تشغيل الحاسب، وقد تضطر إلى تكييفها مع المنطقة الزمنية ، وتنسيقها بطريقة محددة اعتمادًا على اللغة ، إلخ. كل هذا تم بالفعل ، لحسن الحظ ، في مكتبة الوظائف في إطار عمل .NET .
إذن أين هذه المكتبة؟ والباقي ؟
في assembly بالطبع. كما رأينا ، تحتوي assembly على أجزاء من التعليمات البرمجية المترجمة باللغة الوسيطة. إذا كانت قابلة لإعادة الاستخدام ، فهي في ملفات ذات الامتداد .dll .
يتكون .NET Framework من عدد كبير من assembly المثبتة على نظام التشغيل الخاص بك ، في GAC (global assembly cache)  وهو مكان يتم فيه تخزين هذه assembly لجعلها في متناول من برامجنا.
لتتمكن من استخدام هذه assembly في برنامجنا ، يجب أن نشير إلى أننا نريد استخدامها. لذلك ، عليك الرجوع إليها في المشروع.
إذا كشفنا عن المراجع في مستكشف الحلول لدينا ، يمكننا أن نرى أن لدينا بالفعل عددًا قليلاً من المراجع التي تمت إضافتها بواسطة Visual Studio Express :
c sharp .net framework
المراجع التلقائية المضافة عند إنشاء المشروع
هذه مجموعات يتم استخدامها غالبًا ، ولهذا قام Visual Studio Express بإحالتها إلينا تلقائيًا. دائما هذا الاهتمام لتبسيط عملنا ، هو لطيف!
دعونا نأخذ على سبيل المثال المرجع System.Xml .يوحي اسمها لنا أنه في كل شيء تم جمعه ما نحتاجه للتعامل مع XML .
لنبدأ الكتابة System.Xml .، الإكمال التلقائي يوفر لنا العديد من الأشياء.
c sharp .net framework
ليس لدينا أي فكرة عن الغرض من ذلك ، ولكن دعنا نقول على سبيل المثال متغير في التعداد ConformanceLevel

System.Xml.ConformanceLevel level; 
وAssembly. لا يوجد خطأ في الترجمة.
إذا قمت بحذف الإشارة إلى System.Xml.(الزر الأيمن ، Supprimer) ،
c sharp .net framework
وبينما تقوم ب Assembly مرة أخرى ، يمكنك أن ترى أنه ConformanceLevel تم تسطيره الآن باللون الأحمر ، مما يشير إلى وجود مشكلة.
c sharp .net framework
بالإضافة إلى ذلك ، التحويل البرمجي يؤدي الخطأ التالي:
اقتباس: مترجم
نوع مساحة الاسم أو الاسم "ConformanceLevel" غير موجود في مساحة الاسم "System.Xml" ( هل مرجع Assembly مفقود؟ )
بعيداً عن كونه غبي ، يعرض Visual Studio Express رسالة خطأ صريحة إلى حد ما.
لا يمكن العثور على هذا التعداد لأنه تم تعريفه في مجموعة غير مرجعية. يبدو الأمر كما لو أننا طُلب منا أخذ المطرقة لدق مسمار ، لكن المطرقة ليست بجانبنا ، ولكن في المرآب!
لذلك من الضروري الإشارة إلى المطرقة حتى تتمكن من استخدامها.
للقيام بذلك ، انقر فوق Références وإضافة مرجع.
c sharp .net framework
إضافة مرجع
هنا لدينا عدة علامات تبويب على اليسار ( بناءً على إصدار Visual Studio لديك ، قد يكون لديك عرض تقديمي مختلف قليلاً) .
c sharp .net framework
نافذة لإضافة المراجع
تتيح لك كل علامة تبويب إضافة مرجع إلى Assembly .
  • تتيح لك علامة التبويب Assemblies وعلامة التبويب الفرعية Framework الإشارة إلى مجموعة موجودة في GAC ، حيث سنأتي للعثور على Assembly .NET Framework . Extensionsتسمح لك علامة التبويب الفرعية بالعثور على Assembly التي لا تشكل جزءًا مباشرًا من .NET Framework .
  • تتيح لك علامة التبويب Solution الرجوع إلى Assembly الموجودة في الحل الخاص بنا. نظرًا لأن الحل الخاص بنا يحتوي على مشروع واحد فقط ، فستكون علامة التبويب فارغة. سنرى لاحقًا كيفية استخدام علامة التبويب هذه عندما نضيف مجموعات إلى حلولنا.
  • علامة التبويب COM تسمح لك بالإشارة إلى dll COM . أنت لا تعرف ما هو COM؟ يمكنك القول أنه هو جد assembly . من الناحية الفنية ، نحن لا نشير مباشرة إلى dll COM ، لكن Visual Studio Express ينشئ ما يسمى مجمّعًا لاستخدام dll COM . المجمع هو في الواقع نوع من المترجم يسمح لك باستخدام dll COM كما لو كان Assembly . لكن لا تتطرق إلى هذه النقطة التي لن تخدمنا نحن المبتدئين.
  • Parcourir ستتيح لك علامة التبويب الرجوع إلى مجموعة من موقع على القرص الثابت. قد يكون هذا Assembly تابعًا لطرف ثالث مقدم من زميل أو من موزع ، إلخ.
دعنا نعود إلى علامة التبويب Assemblys وابحث عن Assembly الذي قمنا بحذفه ، أيSystem.Xml .
c sharp .net framework
إضافة Assembly System.Xml
اول ما تجده ، اضغط OK . الآن بعد إضافة المرجع ، يمكننا استخدام هذا التعداد مرة أخرى ...
لا أفهم ، لقد حذفت جميع المراجع ، لكنني لا أزال أتمكن من استخدام التاريخ أو اسم المستخدم أو الطريقة Console.WriteLine . إذا فهمت بشكل صحيح ، يجب ألا أكون قادرًا على استخدام الأساليب التي لا يتم الرجوع إليها للAssembly ... هل هذا طبيعي؟
نعم ، هناك مجموعة لا تظهر في المراجع والتي تحتوي على جوهر إطار عمل .NET بأكمله. يجب الإشارة إلى هذا Assembly ، إنه كذلك mscorlib.dll . نظرًا لأنه إلزامي ، تتم الإشارة إليه افتراضيًا بمجرد إنشاء المشروع.

أمثلة أخرى


غالبًا ما تحتاج إلى وظيفة موجودة في الوثائق أو على الإنترنت وأنه من الضروري إضافة مرجع.
قد يكون مرجعًا إلى .NET Framework أو إلى مكتبات الجهة الخارجية أو لك. سنرى لاحقًا كيفية إنشاء مكتباتنا الخاصة.
في وثائق MSDN ، تتم الإشارة دائمًا إلى Assembly الذي يجب الرجوع إليه لاستخدام وظيفة. خذ على سبيل المثال DateTime.Now، الوثائق تخبرنا : :
الاقتباس: MSDN
مساحة الاسم: System
Assembly   :النظام  mscorlib ( في mscorlib.dll )
هذا يعني أننا نستخدم تاريخ اليوم باستخدام Assembly الإلزامي mscorlib وأن الوظيفة في مساحة اسم "System" ، كما رأينا بالفعل.
لذلك لا يوجد شيء يجب القيام به لتتمكن من استخدامه DateTime.Now .
تخيل أننا في حاجة إلى جعل برنامج يستخدم الأعداد المركبة، قد تحتاج أيضا إلى نوع Complex، وجدت في وثائق .
لاستخدامها ، كما هو موضح ، يجب عليك الرجوع إلى Assembly System.Numerics.dll .
لا شيء أبسط ، فلنكرر الإجراء للإشارة إلى Assembly ودعونا نجد System.Numerics.dll :
c sharp .net framework
إضافة Assembly System.Numerics.dll
ثم يمكننا على سبيل المثال استخدام الكود التالي:

Complex c = Complex.One;
Console.WriteLine(c);
Console.WriteLine("Partie réelle : " + c.Real);
Console.WriteLine("Partie imaginaire : " + c.Imaginary);

Console.WriteLine(Complex.Conjugate(Complex.FromPolarCoordinates(1.0, 45 * Math.PI / 180))); 
مع العلم أنه سيكون من الضروري بالطبع إضافة ما يلي:

using System.Numerics; 
السماح لتجنب البادئة Complex مع System.Numerics . لكنك وجدت كل ذلك بنفسك ، أليس كذلك؟ والتي سوف تعطينا:
c sharp .net framework

في الخلاصة


  • إن .NET Framework عبارة عن مجموعة من Assembly التي يجب الرجوع إليها في المشروع الخاص بك من أجل الوصول إلى وظائفها.
  • يمكنك استخدام الكلمة الأساسية using لتضمين مساحة اسم كاختصار في البرنامج الخاص بك ، بحيث لا تضطر إلى بادئة أنواع مساحات الأسماء الكاملة الخاصة بها.