C# باستخدام البيان

C Bastkhdam Albyan



عند التخلص من الموارد مثل اتصالات قاعدة البيانات أو تدفقات المستندات أو اتصالات الشبكة، يتم استخدام عبارة 'الاستخدام' في لغة C# لضمان التخلص المناسب. أصبحت إدارة الكائنات التي تتوافق مع واجهة IDisposable أكثر بساطة من خلال هذا الأسلوب. يتم إنشاء قسم التعليمات البرمجية الذي يتم فيه إنشاء المورد واستخدامه عند الإعلان عن أي عبارة 'استخدام'. إذا تم استخدام معالجة عادية أو استثناء للخروج من الكتلة، فسيتم استدعاء وظيفة Dispose() الخاصة بالكائن على الفور لتحرير أي موارد غير قابلة للتحكم وإجراء أي تنظيف ضروري. في هذا الدليل، سنغطي موارد دفق المستندات باستخدام عبارة 'استخدام' C#.

بناء الجملة:

يتم استخدام عبارة 'استخدام' C# لإدارة الموارد التي يجب التخلص منها بشكل واضح ومريح. ويتبع بناء جملة محدد على النحو التالي:

استخدام ( مورد نوع المورد = نوع المورد الجديد ( ) ) { // شفرة }
  • يتم استخدام الكلمة الأساسية 'باستخدام' للإعلان عن عبارة 'باستخدام'.
  • بعد الكلمة الأساسية 'استخدام'، تحدد نوع المورد الذي تريد العمل معه، متبوعًا باسم المتغير الذي يمثل المورد داخل الكتلة. أي كائن ينفذ واجهة IDisposable يكون مؤهلاً. يمكنك العمل على المورد داخل الكتلة حسب الضرورة.
  • بعد ذلك، يتم استخدام علامة المساواة (=) لتعيين مثيل جديد لنوع المورد للمتغير.
  • هنا، يتم استخدام الكلمة الأساسية 'جديدة' لإنشاء كائن جديد من نوع المورد.
  • يمكن إجراء أي تهيئة أو تكوين إضافي داخل الأقواس بعد الكلمة الأساسية الجديدة.
  • وأخيرًا، قم بإحاطة الكود الذي يستخدم المورد داخل الأقواس المتعرجة {}.

مثال 1:

لنبدأ بأمثلة التعليمات البرمجية لـ C# لتوضيح استخدام عبارة 'باستخدام' C# في هذه المقالة. يغطي الكود المعطى برنامج C# الذي يقرأ محتويات ملف نصي باستخدام فئة 'StreamReader' ضمن عبارة 'استخدام'.







يبدأ البرنامج باستيراد مساحات الأسماء الضرورية، System وSystem.IO، والتي توفر فئات لعمليات الإدخال/الإخراج ومعالجة الملفات. يحدد البرنامج فئة تسمى 'الدمية'. يوجد داخل فئة 'Dummy' طريقة Main() والتي يجب دائمًا معاملتها كمدخل لأي برنامج C# لتنفيذ البرنامج بالكامل من البداية إلى النهاية.



تبدأ الطريقة Main() بالإعلان عن متغير السلسلة 'fp' وتعيين قيمة 'test.txt' له. يمثل هذا مسار الملف للملف النصي المراد قراءته. للتعامل مع كافة الأخطاء المحتملة التي قد تنشأ عند قراءة الملفات، يتم استخدام كتلة محاولة الالتقاط.



ضمن كتلة المحاولة، يتم استخدام عبارة 'استخدام' لإنشاء مثيل لفئة 'StreamReader'. تقع مهمة فهم المحتوى من الملف على عاتق 'StreamReader'. يتم تمرير مسار الملف المخزن في المتغير 'fp' إلى مُنشئ 'StreamReader' للإشارة إلى الملف المراد قراءته.





داخل كتلة 'الاستخدام'، يتم فحص محتويات الملف سطرًا تلو الآخر باستخدام حلقة 'أثناء' ما لم يظهر السطر الأخير من المستند. تقرأ الحلقة سطرًا باستخدام طريقة ReadLine () الخاصة بـ 'StreamReader' وتقوم بتعيينه لمتغير السلسلة 'l'. إذا لم يكن السطر فارغًا، فسيتم طباعته على وحدة التحكم باستخدام Console.WriteLine(l).

بمجرد الوصول إلى نهاية الملف وعدم وجود أسطر أخرى للقراءة، يتم الخروج من كتلة 'الاستخدام' ويتم التخلص من كائن 'StreamReader' تلقائيًا بسبب عبارة 'الاستخدام'. يتم تنشيط كتلة الالتقاط عند ظهور IOException أثناء قراءة مستند. يتم الحصول على رسالة الاستثناء باستخدام e.Message، ويتم عرض رسالة خطأ على وحدة التحكم باستخدام Console.WriteLine().



يكتمل تنفيذ البرنامج ويتم عرض إخراج وحدة التحكم. بافتراض أن ملف 'test.txt' موجود ويحتوي على عدة أسطر من النص، فإن إخراج هذا الرمز هو محتويات الملف المطبوع على وحدة التحكم كما هو معروض في الصورة المرفقة التالية. يتم عرض كل سطر بشكل منفصل في الإخراج:

باستخدام النظام ;

باستخدام النظام. آيو ;

دمية الطبقة {

ثابتة فارغ رئيسي ( ) {

سلسلة fp = 'اختبار.txt' ;

يحاول {

استخدام ( قارئ StreamReader = قارئ التدفق الجديد ( fp ) )

{

سلسلة ل ;

بينما ( ( ل = قارئ. قراءة الخط ( ) ) != باطل )

{

وحدة التحكم. خط الكتابة ( ل ) ;

}

}

}

يمسك ( IOEException ه ) {

وحدة التحكم. خط الكتابة ( 'حدث خطأ: ' + إنها. رسالة ) ;

}

}

}

ملحوظة: إذا كان ملف 'test.txt' غير موجود أو كانت هناك مشكلة في الوصول إلى الملف أو قراءته، فسيتم تنفيذ كتلة الالتقاط، ويتم عرض رسالة خطأ على وحدة التحكم تشير إلى حدوث الاستثناء المحدد.

مثال 2:

فيما يلي مثال بسيط آخر يوضح استخدام عبارة C# 'باستخدام' مع StreamWriter لكتابة البيانات إلى ملف. فيما يلي شرح للكود بالإضافة إلى مخرجاته المتوقعة. يبدأ الكود بإعلان الفئة 'الدمية' والطريقة 'الرئيسية' التي ستبدأ البرنامج وإنهاؤه في النهاية.

ضمن الطريقة 'Main'، يتم الإعلان عن متغير السلسلة 'fp' وتهيئته باستخدام مسار الملف 'test.txt'. ويمثل هذا المستند الذي كتبت عليه المعلومات. للتعامل مع أي IOException محتمل قد ينشأ خلال عملية كتابة المستند، يتم وضع البرنامج في كتلة محاولة الالتقاط.

داخل كتلة المحاولة، يتم إنشاء كائن StreamWriter المسمى 'كاتب' وتهيئته باستخدام عبارة 'استخدام'. يعد StreamWriter مسؤولاً عن كتابة الأحرف في الملف. تتم إضافة سطرين منفصلين من المحتوى إلى مستند داخل قسم 'الاستخدام' عبر وظيفة WriteLine الخاصة بكائن الكاتب. بمجرد الخروج من الكتلة، يتم استدعاء الأسلوب Dispose() الخاص بـ StreamWriter تلقائيًا مما يضمن كتابة أي بيانات معلقة في الملف وتحرير الموارد اللازمة.

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

باستخدام النظام ;

باستخدام النظام. آيو ;

دمية الطبقة {

ثابتة فارغ رئيسي ( ) {

سلسلة fp = 'اختبار.txt' ;

يحاول {

استخدام ( الكاتب StreamWriter = StreamWriter الجديد ( fp ) )

{

كاتب. خط الكتابة ( 'مرحبًا سي شارب!' ) ;

كاتب. خط الكتابة ( 'هذا نص اختباري.' ) ;

}

وحدة التحكم. خط الكتابة ( 'تم كتابة البيانات بنجاح.' ) ;

}

يمسك ( IOEException ه ) {

وحدة التحكم. خط الكتابة ( 'حدث خطأ: ' + إنها. رسالة ) ;

}

}

}

باختصار، تقوم التعليمات البرمجية بإنشاء كائن StreamWriter باستخدام عبارة 'استخدام'، وكتابة سطرين من النص في ملف، ثم التخلص تلقائيًا من StreamWriter. إذا نجحت عملية الكتابة، يقوم البرنامج بإنشاء رسالة نجاح. وإلا، فإنه يصدر رسالة فشل في حالة حدوث أي IOException.

خاتمة

يقدم بيان 'استخدام' C# طريقة عملية وآمنة لإدارة الموارد التي تتطلب التخلص منها بشكل صريح. يمكنك ضمان تنفيذ إجراءات التنظيف اللازمة تلقائيًا وتقليل احتمالية تسرب الموارد عن طريق تضمين استهلاك الموارد ضمن كتلة 'استخدام'. وهذا يزيد من موثوقية التعليمات البرمجية الخاصة بك.