C # تعليمي: الأساسيات التي تحتاجها لإتقان C #



ستساعدك هذه المقالة حول C # Tutorial في معرفة مفصلة بأساسيات C # جنبًا إلى جنب مع أمثلة في الوقت الفعلي لفهم أفضل.

C # هي لغة برمجة قوية لجميع الأغراض طورتها شركة Microsoft Corporation في عام 2000 كمنافس قاتل لـ Java. إنها لغة البرمجة الأكثر شيوعًا والمهيمنة عندما يتعلق الأمر بتطوير الويب وكذلك تطوير تطبيقات سطح المكتب.

في هذا البرنامج التعليمي C # ، سوف نتعلم المفاهيم التالية.





أساسيات C #

مقدمة في لغة البرمجة C #

في أوائل التسعينيات ، كانت Java لغة البرمجة الرائدة لتطوير الويب وتطوير تطبيقات سطح المكتب والعديد من المجالات الأخرى. أرادت Microsoft التوصل إلى منافس يتمتع بالعديد من الميزات المتقدمة التي يمكن أن تترك جافا بعيدًا.



C#-Tutorial-hejlsberg_bio

كان في عام 2000 ، أندرس هيلسبرج وفريق Microsoft التابع له جاءوا بفكرة C # المعروفة باسم C-Sharp. تمت الموافقة على هذه المبادرة من قبل منظمة المعايير الدولية (رائد) والرابطة الأوروبية لمصنعي الكمبيوتر (ECMA). وأخيرًا ، يدخل C # عالم تطوير البرمجيات.

ميزات لغة البرمجة C #



  • لغة البرمجة الشيئية

نهج البرمجة الشيئية هو ما يجعل لغة البرمجة C # الحادة هي لغة البرمجة الأكثر ملاءمة للمبرمجين وسهلة التطوير والمحافظة عليها.

  • اكتب لغة آمنة

معنى Type-Safe هو أن المترجم سوف يُمنح حق الوصول فقط إلى موقع الذاكرة الذي لديه إذن بالتنفيذ. تعمل هذه الميزة على تحسين أمان الرمز إلى مستوى أسي.

  • التوافقية

تجعل ميزة إمكانية التشغيل التفاعلي C # قادرة بما يكفي على القيام بكل ما هو أصلي لـ C ++ بطريقة أكثر فاعلية يمكن أن تتفوق على C ++ نفسها.

  • مكتبة غنية

يوفر C # الوصول إلى أعداد متعددة من المكتبات المدمجة التي توفر وظائف مبرمجة مسبقًا لتقليل الوقت الذي يقضيه في عملية التطوير.

  • قابلة للتحديث وقابلة للتحجيم

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

  • موجه مكون

استخدم المطورون في Microsoft النهج القائم على المكونات لتطوير C #. هذه هي منهجية التطوير الأكثر شيوعًا لإبقاء C # قابلة للتطوير والتحديث بشكل كبير.

  • لغة منظمة

يُفضل نهج البرمجة المهيكلة أثناء دورة حياة تطوير البرامج حيث يصبح من السهل تطوير تجميع ونشر البرنامج مقارنةً بنهج البرمجة الموجه نحو الإجراءات.

  • بسرعة

يحدث أن تكون البرمجة C # أسرع في الترجمة والتنفيذ مقارنة بـ C ++ ولغات البرمجة الأخرى.

التركيب

ثبت أن مايكروسوفت فيجوال ستوديو هو أفضل محرر في فئته لبرمجة C #. سنقوم بتثبيت وإعداد Microsoft Visual Studio لتنفيذ برامج C # الخاصة بنا باتباع الخطوات المذكورة أدناه:

الخطوة 1 : قم بتنزيل Microsoft Visual Studio

جوجل أحدث إصدار من Visual Studio وتنزيل ملف تثبيت ملف في نظامك المحلي ثم يركض ملف المثبت ك مدير.

الخطوة 2: حدد حزمة .NET Desktop Development Package

بمجرد تشغيل برنامج التثبيت ، سيتم تنزيل Visual Studio Editor بنجاح في نظامك المحلي ، لاحقًا سيتم عرض مربع حوار على شاشة سطح المكتب يسأل العدو حزمة معينة تحتاجه في نظامك. هنا ، تحتاج إلى تحديد ملف تطوير سطح المكتب. NET صفقة.

الخطوة 3: اضبط C # Environment

بمجرد حزمك لـ تطوير .NET يتم تنزيلها ، ثم سيتم عرض مربع حوار آخر على شاشتك يسأل عن بيئة التطوير التي تبحث عنها. هنا ، تحتاج إلى حدد البيئة لـ C #.

الخطوة 4: أنشئ مشروعك الأول

بمجرد أن يتم تعيين البيئة ، فأنت على ما يرام. ابدأ تشغيل Visual Studio الخاص بك وحدد إنشاء مشروع جديد الخيار في مربع الحوار المعروض.

ستتم إعادة توجيهك إلى مربع الحوار التالي وهناك تحتاج إلى تحديد مكتبة الفصل الدراسي كـ NET Standard كما هو مبين أدناه.

في مربع الحوار التالي ، سيُطلب منك ذلك تكوين مشروعك . قم بتكوينه وأنت الآن في المحرر. اكتب برنامجك الأول و يركض عليه. سيتم عرض الإخراج بنجاح على موجه الأمر.

باستخدام فئة النظام Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !، Happy Learning ..!')}}

//انتاج:

دعونا ننفذ أول برنامج C # لدينا.

هيكل البرنامج C #

الآن بعد أن قمنا بتنفيذ أول برنامج C # ، دعونا نفهم هيكله بالتفصيل. يحتوي برنامج C # البسيط على الأجزاء التالية.

باستخدام مساحة اسم النظام ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !، Happy Learning ..!')}}}

//انتاج:

مرحبًا بكم في Edureka !، التعلم السعيد ..!

  • صف دراسي: يمكن تعريف الفئة بشكل عام على أنها أ كلمة رئيسية يستخدم لتحديد فئة في برنامج C #.
  • إيدوريكا: إنه اسم صف دراسي. غالبًا ما يُنظر إلى الفصل على أنه مخطط يخزن الأعضاء والطرق المتعلقة بالفصل.
  • الأساسية: في الأساس هو الطريقة الأولية من برنامج C # بأكمله ، يعمل كبوابة للتحكم للدخول إلى البرنامج. يتم تنفيذه قبل تنفيذ أي طريقة أخرى للبرنامج.
  • باطل: هذا الجزء من الكود مخصص لـ نوع الإرجاع من الطريقة. يمكن أن يكون أي نوع بيانات غير الفراغ. يعني الفراغ أن الطريقة لا تحتوي على أي بيانات يتم إرجاعها منها.
  • ثابتة: هذا ال كلمة رئيسية التي تقول إن أعضاء البيانات المعلنة ثابتة ويتم تخصيص ذاكرة مخصصة للأعضاء المصرح بهم.
  • سلسلة [] args: إنه يشبه وسيطات سطر الأوامر التي نستخدمها في برنامجنا. أثناء تنفيذ برنامجنا ، نجتاز بعضًا منه الحجج، والتي سيتم قبولها من قبل البرنامج بسبب هذا البيان.
  • System.Console.WriteLine ('مرحبًا بك في Edureka! ، سعيد التعلم ..!') هنا، النظام هل مساحة الاسم. وحدة التحكمهي تلك الفئة المحددةفي مساحة اسم النظام. ال اكتب () هل هذا هوثابتةتقنيةمن وحدة التحكمالفئة التي يتم توظيفها لتدوينهاالنص الموجود على وحدة التحكم.

الآن ، دعونا نتعرف على أنواع البيانات المتوفرة في C #.

أنواع البيانات

أنواع البيانات في C # مقسمة إلى ثلاث فئات موضحة أدناه.

أنواع بيانات القيمة

ال أنواع بيانات القيمة تقع في System.ValueType المكتبة وجاهزة دائمًا للوصول إليها مباشرةً ويمكن تخصيص المتغيرات مباشرةً لقيمة معينة. يتم تصنيف أنواع بيانات القيمة كذلك إلى نوعين كما هو موضح أدناه:

  • أنواع البيانات المحددة مسبقًا
  • أنواع البيانات المعرفة من قبل المستخدم

أنواع البيانات المحددة مسبقًا: هذه هي الأشياء التي نستخدمها عادة في البرمجة اليومية. يتم تحديد أنواع البيانات هذه مسبقًا بواسطة مطوري اللغة ويتم الاحتفاظ بها جاهزة للاستخدام من قبل المبرمجين.

مثال:

int ، float ، char ، short double ، إلخ

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

مثال: الهيكل ، Enum

نوع البيانات نطاق الذاكرة المخصصة حجم الذاكرة
توقيع شار -128 إلى 127 1 بايت
حرف غير موقع 0 إلى 127 1 بايت
شار -128 إلى 127 1 بايت
وقع قصير -32768 إلى 32767 2 بايت
قصيرة بدون توقيع 0 إلى 65535 2 بايت
قصيرة -32768 إلى 32767 2 بايت
وقعت int -2،147،483،648 إلى -2،147،483،647 4 بايت
عدد صحيح غير موقعة 0 إلى 4،294،967،295 4 بايت
int -2،147،483،648 إلى -2،147،483،647 4 بايت
وقعت طويلا -9،223،372،036،854،775،808 إلى 9،223،372،036،854،775،807 8 بايت
طويل بدون توقيع 0 إلى 18،446،744،073،709،551،615 8 بايت
طويل -9،223،372،036،854،775،808 إلى 9،223،372،036،854،775،807 8 بايت
تطفو 1.5 * 10-45 - 3.4 * 1038 ، (دقة 7 أرقام) 4 بايت
مزدوج 5.0 * 10-324 - 1.7 * 10308 ، (دقة 15 رقمًا) 8 بايت
عدد عشري -7.9 * 10-28 - 7.9 * 1028 ، (دقة 28 رقمًا) 16 بايت


نوع بيانات المؤشر

نوع المؤشر هو نوع بيانات بسيط. وظيفتها مشابهة تمامًا للمؤشرات في C. فهي مصممة لتخزين عنوان مؤشر آخر.

تعويم * ptr

أنواع البيانات المرجعية

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

يتم تصنيف المتغيرات المرجعية إلى ثلاثة أنواع مختلفة كما هو مذكور أدناه:

  • نوع الكائن

يتوفر نوع بيانات الكائن بتنسيق System.Object صف دراسي.الكائنأنواعيمكن ان يكونالمخصصة لقيمالأنواع الأخرى ،مرجعأنواعالمعرفة مسبقا من قبل المستخدمأنواع. لكن قبلمهمةيتطلب القيم اكتب تحويلات.

كائن abc abc = 50 // يسمى هذا بالملاكمة
  • النوع الديناميكي

تم تصميم متغيرات النوع الديناميكي لتخزين جميع أنواع القيم تقريبًا. يطلق عليه اسم Dynamic Type لأن فحص نوع القيم يحدث في وقت التشغيل

كيفية إنشاء الحزمة في جافا
س ديناميكية = 10
  • نوع السلسلة

نوع السلسلة متاح في النظام صف دراسي. تم تصميم نوع السلسلة لتخزين القيم الحرفية للسلسلة. يتم تخزين String Literals في شكلين بتنسيقشكلين

    • مقتبس
    • اقتباس.
السلسلة S = 'Edureka'
  • ال اقتباس تبدو السلسلة الحرفية
@ 'Edureka'

الآن دعونا نفهم المتغيرات.

المتغيرات

المتغيرات هي الأسماء المخصصة لموقع الذاكرة الذي يخزن بيانات معينة مقدمة من المستخدم ويمكن الوصول إلى تلك البيانات بسهولة باستخدام اسم المتغير. هناك خمسة أنواع من المتغيرات متوفرة في C #

اكتب مثال
لا شيء بيانات فارغة
قيمة منطقية صح وخطأ
عدد صحيح Int ، Char ، Byte ، Short ، Long
تطفو تعويم ومزدوجة
عدد عشري عدد عشري

مثال:

int a، b double x float p char abc

القواعد التي يجب اتباعها للإعلان عن المتغيرات في C #

  • يمكن أن يتضمن المتغير أبجديات وأرقام وشرطات سفلية.
  • لا يمكن أن يبدأ اسم المتغير إلا بحرف أبجدي أو شرطة سفلية فقط.
  • لا يمكن أن تبدأ المتغيرات برقم أو بحرف خاص.
  • غير مسموح بالمسافات البيضاء بين اسم المتغير.
  • الكلمات الأساسية المحجوزة محظورة من استخدامها كأسماء متغيرات.

العاملين

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

  • العمليات الحسابية
  • العوامل العلاقية
  • العوامل المنطقية
  • عوامل Bitwise
  • مشغلي التخصيص

العمليات الحسابية

المشغل أو العامل مثال وصف
+ أ + ب يضيف معاملين
- أ - ب ملخصات اثنين من المعاملات
* أ * ب يضاعف معاملين
/ أ / ب يقسم معاملتين
٪ أ٪ ب باقي المعاملين
++ أ ++ زيادة عملية
- إلى- عملية إنقاص

العوامل العلاقية

المشغل أو العامل مثال وصف
== أ == ب صحيح ، إذا كان كلا المعاملين متساويين ، فإن Else False
! = أ! = ب صحيح ، إذا كان كلا المعاملين غير متساويين ، فإن Else False
> أ> ب صواب ، إذا كان A أكبر ، وآخر خطأ
< إلى صواب ، إذا كانت B أكبر ، وأخرى خطأ
> = أ> = ب صواب ، إذا كانت A أكبر أو تساوي ، فإن Else False
<= إلى<= B صحيح ، المعرف B يساوي أكبر ، وآخر خطأ

العوامل المنطقية

المشغل أو العامل مثال وصف
&& أ && ب صحيح ، إذا كان كلا المعاملين صحيحًا ، فإن Else False
|| أ || ب صحيح ، إذا كان أحد المعاملات صحيحًا ، فإن Else False
! أ ! ب يعكس الحالة المنطقية للمعامل

عوامل Bitwise

إلى ب أ & ب أ | ب أ ^ ب
واحد واحد واحد واحد 0
واحد 0 0 واحد واحد
0 واحد 0 واحد واحد
0 0 0 0 0
المشغل أو العامل مثال وصف
~ (~ أ) العامل التكميلي لـ Binary One أحادي وله تأثير 'تقليب' البتات.
<< إلى<<2 مشغل ثنائي اليسار. يتم نقل قيمة المعاملات اليسرى إلى اليسار بعدد البتات المحدد بواسطة المعامل الأيمن.
>> أ >> 2 مشغل ثنائي التحول الأيمن. يتم نقل قيمة المعاملات اليسرى إلى اليمين بعدد البتات المحدد بواسطة المعامل الأيمن.

مشغلي التخصيص

المشغل أو العامل مثال وصف
= أ = ب + ج أ = ب + ج ، ب + ج مُسند إلى أ
+ = أ + = ب أ = أ + ب ، أ + ب مسند إلى أ
- = أ - = ب أ = أ-ب ، أ-ب مُسند إلى أ
* = أ - = ب أ = أ * ب ، أ * ب مسند إلى أ
/ = أ / = ب أ = أ / ب ، أ / ب مُسند إلى أ
٪ = أ٪ = ب أ = أ٪ ب ، أ٪ ب مسند إلى أ
<<= إلى<<= 2 عامل النقل الأيسر والتعيين
>> = أ >> = 2 التحول الأيمن وعامل التخصيص
& = أ & = 2 عامل البت والتعيين
^ = أ ^ = 2 عامل التخصيص والحصري على مستوى البت
| = أ! = 2 عامل التخصيص والشمول على مستوى البت

الحلقات

إلى عقدة يتم استخدام العبارة لتنفيذ كتلة من العبارات بشكل متكرر حتى يتم استيفاء شرط معين. تتكون لغة C # من جمل التكرار التالية.

  • لحلقة
  • حائط اللوب
  • افعل أثناء التكرار

لحلقة

ال لحلقة يُستخدم لتنفيذ مقطع كود معين لعدة مرات حتى يتم استيفاء الشرط المحدد.

بناء الجملة

لـ (زيادة / إنقاص شرط التهيئة) {// code section}

مخطط:

مثال:

باستخدام فئة النظام العامة ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//انتاج:

واحد
2
3
4
5

حائط اللوب

ال حائط اللوب يتم استخدامه لتنفيذ مقطع كود لعدة عدة مرات حتى يتم استيفاء شرط معين.

بناء الجملة

while (condition) {// code to beعدم}

مخطط:

مثال:

باستخدام حلقات مساحة اسم النظام {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

//انتاج:

قيمة: 5
قيمة: 6
قيمة a: 7
قيمة a: 8
قيمة: 9
قيمة a: 10

افعل أثناء التكرار

تتشابه Do while loop تمامًا مع while Loop ولكن الاختلاف الوحيد هو أن الشرط يوضع في نهاية الحلقة. ومن ثم ، يتم تنفيذ الحلقة مرة واحدة على الأقل.

بناء الجملة

نفذ {// code to beعدم} بينما (الشرط)

مخطط:

مثال:

باستخدام مساحة اسم النظام Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1، n = 5، product do {product = n * i Console.WriteLine ('{0} * {1} = { 2} '، n، i، product) i ++} بينما (i<= 10) } } } 

//انتاج:

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

الشرط

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

الأنواع المختلفة من العبارات الشرطية في لغة C ++ هي كما يلي:

  1. إذا البيان
  2. بيان If-Else
  3. جملة If-else المتداخلة
  4. إذا- Else إذا سلم
  5. بيان التبديل

إذا البيان

الاوحد إذا يتم استخدام العبارة بلغة C # لتنفيذ الكود إذا كان الشرط صحيحًا. ويسمى أيضًا بيان الاختيار أحادي الاتجاه.

بناء الجملة

if (boolean-expression) {// الجمل المنفذة إذا كان التعبير المنطقي صحيحًا}

مخطط:

مثال:

باستخدام مساحة اسم النظام مشروط {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//انتاج:

2 أقل من 5
يتم تنفيذ هذا البيان دائما.

بيان If-Else

ال لو غير هذا يتم استخدام العبارة بلغة C لتنفيذ الكود إذا كان الشرط صحيحًا أو خطأ. ويسمى أيضًا بيان الاختيار ثنائي الاتجاه.

بناء الجملة

if (boolean-expression) {// الجمل المنفذة إذا كان التعبير المنطقي صحيحًا} else {// الجمل المنفذة إذا كان التعبير المنطقي خطأ}

مخطط:

مثال:

باستخدام مساحة اسم النظام المشروط {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//انتاج:

12 أكبر من أو يساوي 5
يتم تنفيذ هذا البيان دائما.

جملة If-else المتداخلة

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

بناء الجملة

if (boolean-expression) {if (nested-expression-1) {// code to beعدم} else {// code to be Implement}} else {if (nested-expression-2) {// code to beعدم } آخر {// كود ليتم تنفيذه}}

مخطط:

مثال:

باستخدام مساحة اسم النظام مشروط {فئة متداخلة {عامة ثابتة باطلة رئيسية (سلسلة [] args) {int first = 7، second = -23، third = 13 if (first & gt second) {if (first

//انتاج:

13 هو الأكبر

إذا سلم آخر

ال إذا- وإلا- إذا البيان يستخدم لتنفيذ كود واحد من شروط متعددة. ويسمى أيضًا بيان القرار متعدد المسارات. إنها سلسلة من عبارات if .. else حيث تكون كل عبارة if مرتبطة بـ else if و last if ستكون عبارة else.

بناء الجملة

if (condition1) {// code to be البحر إذا كان condition1 صحيحًا} وإلا إذا (condition2) {// code ليتم تنفيذه إذا كان condition2 صحيحًا} وإلا إذا (condition3) {// code ليتم تنفيذه إذا كانت condition3 صحيحة} ... وإلا {// رمز يتم تنفيذه إذا كانت جميع الشروط خاطئة}

مخطط:

مثال:

باستخدام فئة النظام Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') وإلا إذا (i == 15) Console.WriteLine (' i هو 15 ') وإلا إذا (i == 20) Console.WriteLine (' i is 20 ') else Console.WriteLine (' أنا غير موجود ')}}

//انتاج:

أنا 20

بيان التبديل

مفتاح كهربائي يعمل البيان كبديل لسلم if-else-if الطويل الذي يُستخدم لاختبار قائمة الحالات. تحتوي جملة التبديل على تسمية حالة واحدة أو أكثر تم اختبارها مقابل تعبير التبديل. عندما يتطابق التعبير مع حالة ، سيتم تنفيذ العبارات المرتبطة بهذه الحالة.

بناء الجملة

switch (متغير / تعبير) {case value1: // يتم تنفيذ العبارات إذا كان التعبير (أو المتغير) = value1 break case value2: // الجمل المنفذة إذا كان التعبير (أو المتغير) = value1 break ... ... ... .. .... ... الافتراضي: // يتم تنفيذ العبارات إذا لم تكن هناك حالة مطابقة}

مخطط:

مثال:

باستخدام مساحة اسم النظام شرطي {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter an alphabet') ch = Convert.ToChar (Console.ReadLine ()) التبديل (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') كسر حالة 'e': Console.WriteLine ('Vowel') حالة كسر 'i': Console.WriteLine ('Vowel') حالة كسر 'o': Console.WriteLine ('Vowel') كسر حالة 'u': Console.WriteLine ('Vowel') فاصل افتراضي: Console.WriteLine ('Not a vowel') break}}}}

//انتاج:

أدخل الأبجدية
يكون
حرف متحرك

سلاسل

خيط نوع البيانات هو عضو في النظام صف دراسي. إنه قادر على تخزين نوع الحرف من البيانات. يمكننا إجراء عمليات مختلفة على Stings مثلالتسلسل والمقارنة والحصول على السلسلة الفرعية والبحث والتقليم والاستبدال وغيرها الكثير.

تشبيه الخيط والوتر

في C # خيط و خيط متكافئة. سلسلة الكلمة هي كلمة رئيسية ويتصرف مثل النظام صف دراسي. يمكننا استخدام أي من الإصدارين للإعلان عن السلاسل.

بناء الجملة:

string s1 = 'Edureka' // إنشاء سلسلة باستخدام سلسلة الكلمات الرئيسية String s2 = 'Happy Learning' // إنشاء سلسلة باستخدام فئة String

مثال:

استخدام فئة النظام العامة StringExample {public static void Main (سلسلة [] args) {string s1 = 'Edureka' char [] ch = {'C'، 's'، 'h'، 'a'، 'r'، ' سلسلة p '،' '،' T '،' u '،' t '،' o '،' r '،' i '،' a '،' l '} السلسلة s2 = سلسلة جديدة (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

//انتاج:

إدوريكا
برنامج Csharp التعليمي

طرق السلسلة في C #

طريقة وصف
استنساخ () يُستخدم لإرجاع مرجع إلى مثيل String هذا.
قارن (سلسلة ، سلسلة) تستخدم لمقارنة كائنين محددين من سلسلة String.
Concat (سلسلة ، سلسلة) قم بسلسلة مثيلين محددين من السلسلة.
يحتوي على (سلسلة) إرجاع قيمة تشير إلى سلسلة فرعية محددة
نسخ (سلسلة) يُستخدم لإنشاء مثيل جديد من String بنفس القيمة
CopyTo (Int ، Char [] ، Int ، Int) ينسخ الأحرف من موضع محدد
يساوي (سلسلة ، سلسلة) تحديد أن كائنين من عناصر السلسلة لهما نفس القيمة.
تنسيق (سلسلة ، كائن) استبدل عنصر تنسيق واحدًا أو أكثر في سلسلة محددة
IndexOf (سلسلة) يُبلغ عن الفهرس الصفري لأول مرة
إدراج (Int32 ، سلسلة) تُرجع سلسلة جديدة يتم فيها إدراج سلسلة في فهرس.
IsInterned (سلسلة) تشير إلى أن هذه السلسلة بصيغة تطبيع Unicode C.
IsNullOrEmpty (سلسلة) يشير إلى أن السلسلة المحددة خالية أو سلسلة فارغة.
IsNullOrWhiteSpace (سلسلة) يُستخدم للإشارة إلى ما إذا كانت السلسلة المحددة خالية أم فارغة أم
ضم (سلسلة ، سلسلة []) يستخدم لربط جميع عناصر مصفوفة سلسلة
LastIndexOf (شار) يبين موضع الفهرس الصفري للحرف الأخير
LastIndexOfAny (شار []) يبين موضع الفهرس الصفري للحرف الأخير
إزالة (Int32) ترجع سلسلة جديدة فيها كل الأحرف
استبدال (سلسلة ، سلسلة) تُرجع سلسلة جديدة فيها كل تكرارات السلسلة
انقسام (شار []) يتم استخدامه لتقسيم سلسلة إلى سلاسل فرعية
يبدأ بـ (سلسلة) يتم استخدامه للتحقق مما إذا كانت بداية هذه السلسلة
سلسلة فرعية (Int32) يتم استخدامه لاسترداد سلسلة فرعية من هذا المثال.
ToCharArray () ينسخ الأحرف في هذه الحالة إلى مصفوفة Unicode.
إلى سلسلة() يتم استخدامه لإرجاع مثيل String.
تقليم() تقليم السلسلة


المصفوفات

على غرار لغات البرمجة الأخرى ، تحتوي C # على مصفوفات. المصفوفات هي هياكل البيانات البسيطة المصممة لتخزين نفس نوع بيانات العناصر في موقع ذاكرة قريب.

يدعم C # أنواع المصفوفات التالية.

  • صفيف أحادي البعد
  • صفيف متعدد الأبعاد
  • صفيف خشنة

صفيف أحادي البعد

يخزن المصفوفة أحادية الأبعاد العناصر في شكل صف واحد.

بناء الجملة

int [] arr = new int [5] // إنشاء مصفوفة

مثال:

باستخدام فئة النظام العامة ArrayExample {public static void Main (سلسلة [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 من أجل (int i = 0 i 

//انتاج:

10
عشرين
30
40
خمسون

صفيف متعدد الأبعاد

تخزن المصفوفة متعددة الأبعاد العناصر في شكل أبعاد متعددة مثل المصفوفة والمكعب وما إلى ذلك.

بناء الجملة

int val = a [2،3]

مثال:

استخدام مساحة اسم النظام ArrayApplication {class MyArray {static void Main (string [] args) {int [،] a = new int [5، 2] {{0، 0}، {1، 2}، {2، 4}، {3، 6}، {4، 8}} int i، j لـ (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

//انتاج:

أ [0،0] = 0
أ [0،1] = 0
أ [1،0] = 1
أ [1،1] = 2
أ [2،0] = 2
أ [2،1] = 4
أ [3،0] = 3
أ [3،1] = 6
أ [4،0] = 4
أ [4،1] = 8

صفيف خشنة

المصفوفة الخشنة هي ببساطة مجموعة من المصفوفات.

مثال:

باستخدام مساحة اسم النظام ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0،0}، new int [] {1،2 }، new int [] {2،4}، new int [] {3، 6}، new int [] {4، 8}} int i، j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

//انتاج:

أ [0] [0] = 0
أ [0] [1] = 0
أ [1] [0] = 1
أ [1] [1] = 2
أ [2] [0] = 2
أ [2] [1] = 4
أ [3] [0] = 3
أ [3] [1] = 6
أ [4] [0] = 4
أ [4] [1] = 8

المجموعات

يمكن اعتبار التجميع ببساطة على أنه مجموعة من الكائنات تم جمعها معًا لتطبيق بعض الوظائف على البيانات التي تم جمعها. العمليات التي كان يمكن إجراؤها مرة واحدة على مجموعة هي ،

  • تخزين الكائن
  • كائن التحديث
  • حذف الكائن
  • استرجاع الكائن
  • كائن البحث و
  • نوع الكائن

أنواع المجموعات

هناك ثلاث احتمالات مختلفة للعمل مع المجموعات. تم ذكر مساحات الأسماء الثلاثة أدناه:

  • System.Collections.Generic الطبقات
  • System.Collections الطبقات
  • System.Collections.Collections. متزامن الطبقات

تحتوي فئة System.Collections.Generic على الأنواع التالية من الفئات:

  • قائمة
  • كومة
  • طابور
  • لينكدليست
  • HashSet
  • SortedSet
  • قاموس
  • تم فرزها
  • قائمة مرتبة

ال System.Collections تعتبر الطبقات بمثابة فصول قديمة. أنها تشمل الفئات التالية.

  • ArrayList
  • كومة
  • طابور
  • Hashtable

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

  • BlockingCollection
  • حقيبة متزامنة
  • حزمة متزامنة
  • متزامن
  • القاموس المتزامن
  • أقسام
  • أقسام
  • قابل للطلب

قائمة

ال قائمة يعتبر بمثابة بنية بيانات متوفرة في النظام ، المجموعة ، الجينات مساحة الاسم. يمكنه تخزين وجلب العناصر. القائمة قادرة على تخزين العناصر المكررة.

مثال:

باستخدام نظام يستخدم System.Collections.Generic فئة عامة Edureka {public static void Main (سلسلة [] args) {var names = new List () names. أضف ('Sandhya') names. أضف ('Arun') names.Add ( أسماء 'Prashanth'. إضافة ('Kiran') foreach (اسم متغير في الأسماء) {Console.WriteLine (name)}}}

//انتاج:

سانديا
آرون
براشانث
كيران

مجموعة تجزئة

C # HashSetالفئة غالبا ما تكون معتادةمتجر،يبعدأوقراءة المكونات. ذلكلاتخزين مكررالمكونات.إنه حثليستخدم HashSet الفئةإذاعندكللتخزينبمفردي مميز المكونات . انها وجدت في System.Collections.Generic مساحة الاسم.

مثال:

باستخدام النظام باستخدام System.Collections.Generic فئة عامة Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( أسماء 'بوجاري'. إضافة أسماء ('عمران'). إضافة ('كاران') إلى كل (اسم متغير في الأسماء) {Console.WriteLine (الاسم)}}}

//انتاج:

سونيل
عمار
بوجاري
عمران
كاران

مجموعة مرتبة

C # SortedSetغالبًا ما اعتاد الفصلمتجر، إزالة أو اقرأ عناصر . يحافظ على الترتيب التصاعدي ولاتخزين مكررعناصر.انها سريعةلاستخدام SortedSetالفئةإذاعندكللتخزين مميز المكونات والحفاظ على ترتيب تصاعدي.انهاوجدت في System.Collections.Generic مساحة الاسم.

مثال:

باستخدام النظام باستخدام System.Collections.Generic فئة عامة Edureka {public static void Main (string [] args) {var names = new SortedSet () names. أضف ('Sanjay') names. أضف أسماء ('Anuradha'). أسماء 'Praveen'). أضف أسماء ('Ravi'). أضف ('Kajol') foreach (var name in names) {Console.WriteLine (name)}}}

//انتاج:

أنورادها
كاجول
برافين
رافي
سانجاي

كومة

ال كومة هي مجموعة بسيطة تتبع حافة أو إجراء أول ما يدخل أخيرًا أثناء معالجة العناصر المخزنة فيه.

مثال:

باستخدام النظام باستخدام System.Collections.Generic فئة عامة Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( أسماء 'James'). ادفع ('Rajesh') أسماء. اضغط ('kumar') foreach (اسم سلسلة في الأسماء) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop، Peek element:' + names.Peek ())}}

//انتاج:

كومار
راجيش
جوامع
بوجا
تشاندان
عنصر النظرة الخاطفة: كومار
البوب: كومار
بعد عنصر البوب ​​، نظرة خاطفة: راجيش

طابور

قائمة الانتظار تشبه Stack تمامًا ولكن الاختلاف الوحيد هو أن قائمة الانتظار تتبعها FIFO أو مبدأ ما يدخل أولاً ويخرج أولاً أثناء معالجة العناصر المخزنة فيه.

مثال:

باستخدام النظام باستخدام System.Collections.Generic فئة عامة Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( أسماء 'John') ، أسماء Enqueue ('Raju'). Enqueue ('Hari') foreach (اسم سلسلة في الأسماء) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue، Peek element:' + names.Peek ())}}

//انتاج:

سروجان
براجات
يوحنا
شرسة
يوم
عنصر نظرة خاطفة: سروجان
ديكيو: سروجان
بعد Dequeue ، Peek element: Prajat

قائمة مرتبطة

القائمة المرتبطة عبارة عن مجموعة ذاكرة ديناميكية. يتم تخزين العناصر الموجودة في القائمة المرتبطة عن طريق الوصول إلى الذاكرة من الكومة وتخزين العناصر بترتيب مستمر عن طريق ربط عناوينها.

مثال:

باستخدام النظام باستخدام System.Collections.Generic فئة عامة Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( أسماء 'Prakash'. أسماء AddLast ('jay') .AddFirst ('sai') foreach (اسم var في الأسماء) {Console.WriteLine (name)}}}

//انتاج:

ساي
حدود
آرون
براكاش
جاي

قاموس

قاموس الفئةيستخدمفكرةمن الهاشتابل. يخزن القيم علىالفرضيةمن المفتاح. أنه يحتوي علىمميزمفاتيحبمفردي. بواسطةالمساعدةمن المفتاح ،نحن ببساطةبحث أويسلب العناصر.انهاوجدت في System.Collections.Generic مساحة الاسم.

مثال:

باستخدام النظام باستخدام System.Collections.Generic class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names. أضف ('1'، 'Shiva') names. أضف ('2'، أسماء 'Prasad'). أضف أسماء ('3'، 'Preetam'). أضف أسماء ('4'، 'Roy'). أضف ('5'، 'Akash') foreach (KeyValuePair kv in names) {Console. اكتب (kv.Key + '' + kv.Value)}}}

//انتاج:

1 شيفا
2 براساد
3 بريتام
4 روي
5عكاش

القاموس المصنف

ال تم فرزها الفئةيستخدمالتصميممن الهاشتابل. يخزن القيم علىالفكرةمن المفتاح. أنه يحتوي علىمميزمفاتيح وتحافظ على ترتيب تصاعدي فيالفكرةمن المفتاح. بواسطةالمساعدةمن المفتاح ،نحن ببساطةبحث أويسلب العناصر.انهاوجدت في System.Collections.Generic مساحة الاسم.

مثال:

باستخدام النظام باستخدام System.Collections.Generic class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1'، 'Arun') names.Add ('4'، أسماء 'Vishal'). أضف أسماء ('5'، 'Ramesh'). أضف أسماء ('3'، 'Vidya'). أضف ('2'، 'Pallavi') foreach (KeyValuePair kv في الأسماء) {Console. اكتب (kv.Key + '' + kv.Value)}}}

//انتاج:

1 شيفا
2 براساد
3 بريتام
4 روي
5عكاش

قائمة مرتبة

ال قائمة مرتبة يكونامجموعة من أزواج المفتاح / القيمة. يخزن القيم علىالفرضيةمن المفتاح. القائمة المفروزةالفئةيحتوي علىمميزمفاتيح وتحافظ على ترتيب تصاعدي فيالفرضيةمن المفتاح. بواسطةالمساعدةمن المفتاح ،نحن قادرون على ذلكالبحث أو الإزالةعناصر.انهاعثر عليه في System.Collections.Generic مساحة الاسم.

مثال:

باستخدام النظام باستخدام System.Collections.Generic class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1'، 'Arun') names.Add ('4'، أسماء 'Vishal'). أضف أسماء ('5'، 'Ramesh'). أضف أسماء ('3'، 'Vidya'). أضف ('2'، 'Pallavi') foreach (KeyValuePair kv في الأسماء) {Console. اكتب (kv.Key + '' + kv.Value)}}}

//انتاج:

1 أرون
2 بالافي
3 فيديا
4 فيشال
5راميش

بناء

الهيكل هو نوع بيانات معرف من قبل المستخدم مصمم لتخزين عناصر متعددة من نوع البيانات المختلفة. تم الإعلان عن الهيكل باستخدام الكلمة الأساسية هيكل.

مثال:

استخدام كتب هيكل النظام {public string title public string author public string subject public int book_id} public class Edureka {public static void Main (string [] args) {Books Book1 Books Book2 Book1.title = 'C # Programming' Book1.author = ' Ramchandra Kumar 'Book1.subject =' C ++ Programming Tutorial 'Book1.book_id = 95908978 Book2.title =' فواتير الاتصالات 'Book2.author =' Karan 'Book2.subject =' دروس فواتير الاتصالات 'Book2.book_id = وحدة تحكم 18674900.WriteLine ( 'عنوان الكتاب الأول: {0}'، Book1.title) Console.WriteLine ('Book 1 Author: {0}'، Book1.author) Console.WriteLine ('Book 1 subject: {0}'، Book1.subject) Console.WriteLine ('Book 1 book_id: {0}'، Book1.book_id) Console.WriteLine ('Book 2 title: {0}'، Book2.title) Console.WriteLine ('Book 2 Author: {0}'، Book2.author) Console.WriteLine ('Book 2 subject: {0}'، Book2.subject) Console.WriteLine ('Book 2 book_id: {0}'، Book2.book_id) Console.ReadKey ()}}

//انتاج:

عنوان الكتاب الأول: C # Programming
الكتاب 1 المؤلف: رامشاندرا كومار
كتاب 1 موضوع: C ++ Programming Tutorial
كتاب 1 book_id: 95908978
عنوان الكتاب الثاني: فواتير الاتصالات
الكتاب 2 المؤلف: كاران
كتاب 2 موضوع: دروس فواتير الاتصالات
الكتاب الثاني book_id: 18674900

المهام

تُعرَّف الوظيفة بأنها كتلة من الكود الخاص بالشفرة الرئيسية. يتم استخدام الوظيفة لتنفيذ العبارات المحددة في كتلة التعليمات البرمجية. تتكون الوظيفة من المكونات التالية.

  • اسم وظيفة: إنه اسم مميز يُستخدم لإجراء استدعاء للوظيفة.
  • نوع الإرجاع: يحدد نوع البيانات لقيمة إرجاع الدالة.
  • الجسم: يحتوي على عبارات قابلة للتنفيذ.
  • محدد الوصول: تحدد إمكانية الوصول إلى الوظيفة في التطبيق.
  • المعلمات: إنها قائمة بالحجج التي يمكننا تمريرها إلى الوظيفة أثناء المكالمة.

بناء الجملة

FunctionName () {// function body // return statement}

مثال:

باستخدام مساحة اسم النظام FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('إلى Edureka') Console.WriteLine ('ترحيب' + رسالة)}}}

//انتاج:

وظيفة العرض الداخلي
مرحبا بكم في Edureka

يمكن تنفيذ الوظائف بثلاث طرق مختلفة:

  • دعوة حسب القيمة
  • دعوة حسب المرجع
  • معلمة الخروج

دعوة حسب القيمة

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

مثال:

باستخدام مساحة اسم النظام CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('القيمة داخل دالة العرض' + val)} الفراغ الثابت الرئيسي (سلسلة [] args) {int val = 50 برنامج Edureka = وحدة تحكم Edureka () جديدة.WriteLine ('القيمة قبل استدعاء الوظيفة' + برنامج val). Show (val) Console.WriteLine ('القيمة بعد استدعاء الوظيفة' + val)}}}

//انتاج:

القيمة قبل استدعاء الوظيفة 50
القيمة داخل دالة العرض 2500
القيمة بعد استدعاء الوظيفة 50

دعوة حسب المرجع

في طريقة الاتصال حسب المرجع ،إلى المرجع الكلمة الأساسية لتمرير الوسيطة كنوع مرجعي. يمرر مرجع الوسائط إلى الوظيفة بدلاً من نسخة من القيمة الأصلية. التغييرات في القيم التي تم تمريرها دائمة و تعديل قيمة المتغير الأصلي.

مثال:

باستخدام مساحة اسم النظام CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('The value within the show function' + val)} static void Main (string [] args) {int val = 50 برنامج Edureka = وحدة تحكم Edureka () جديدة.WriteLine ('القيمة قبل استدعاء الوظيفة' + برنامج val). Show (ref val) Console.WriteLine ('القيمة بعد استدعاء الوظيفة' + val)}}}

//انتاج:

القيمة قبل استدعاء الوظيفة 50
القيمة داخل دالة العرض 2500
القيمة بعد استدعاء الوظيفة 2500

معلمة الخروج

معلمة الخروجيوفر خارج الكلمات الأساسية لتمرير الحجج على أنها من النوع الخارجي. إنه يشبه النوع المرجعي ، إلا أنه لا يتطلب تهيئة المتغير قبل التمرير. يجب أن نستخدم خارج الكلمة الأساسية لتمرير الوسيطة على أنها نوع خارجي. يكون مفيدًا عندما نريد دالة لإرجاع قيم متعددة.

مثال:

استخدام مساحة اسم النظام OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('القيمة قبل تمرير المتغير' + val) program.Show (out val) Console.WriteLine ('القيمة بعد استلام المتغير الخارج' + val)}}}

//انتاج:

القيمة قبل تمرير المتغير 50

القيمةبعد استلام المتغير الخارج 25

الآن دعونا ننتقل إلى البرمجة الشيئية

البرمجة الشيئية

البرمجة الشيئية النظامهو نموذج برمجة يعتمد على مفهوم شاء التي تحتوي على أعضاء البيانات و طرق المتعلقة بهم. الغرض الأساسي من البرمجة الشيئية هو زيادة مرونة البرامج وقابليتها للصيانة

ميزات البرمجة الشيئية:

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

النماذج الموجهة للكائنات في C # هي كما يلي

العد في C #

تعداد أو يُطلق عليه أيضًا اسم تعداد في C # لتخزين القيم الثابتة دون الحاجة إلى تغييرها أثناء التنفيذ الكامل لبرنامج C #. ذلكيستخدم لتخزين مجموعة من الثوابت المسماة مثل الموسم والأيام والشهر والحجم وما إلى ذلك

مثال:

باستخدام فئة النظام العامة EnumExample {أسبوع التعداد العام {الإثنين ، الثلاثاء ، الأربعاء ، الخميس ، الجمعة ، السبت ، الأحد} الفراغ العام الثابت الرئيسي () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Monday = {0}'، x) Console.WriteLine ('Friday = {0}'، y)}}

//انتاج:

الاثنين = 0
الجمعة = 4

نهج البرمجة الشيئية

يمكن تحقيق أسلوب البرمجة الشيئية باتباع الطرق الموضحة أدناه.

التغليف

التغليف هي طريقة لدمج طرق جنبا إلى جنب مع أعضاء البيانات.

مثال:

باستخدام مساحة اسم النظام Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}'، length) Console.WriteLine (' Width: {0} '، width) Console.WriteLine (' Area: {0} '، GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

//انتاج:

الطول: 50
العرض: 35
المساحة: 1750

التجريد

التجريد هي طريقة ل إخفاء جزء الترميز المعقد من المستخدم من خلال تزويده بالمعلومات المطلوبة فقط التي يحتاجها.

مثال:

استخدام فئة النظام العام التجريدي الشكل {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Shape {public override void ارسم () {Console.WriteLine ('Drawing Circle ...')}} public class TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//انتاج:

رسم مستطيل ...
دائرة الرسم ...

واجهه المستخدم

برنامج java للاتصال بقاعدة بيانات mysql

ال واجهه المستخدم يشبه تماما التجريد. تتمثل وظيفة الواجهة في إخفاء البيانات غير المهمة عن المستخدم وتزويده بالبيانات المهمة الوحيدة التي يحتاجها.

مثال:

باستخدام واجهة النظام العامة Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('Drawing Circle ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//انتاج:

رسم مستطيل ...
دائرة الرسم ...

تعدد الأشكال

تعدد الأشكالهو مزيج من 'بولي' + 'يتحول' وهو ما يعني العديد من الأشكال. إنها كلمة يونانية. هذا يعني أن مقطع الكود يمكن أن يتخذ أشكالًا متعددة. لدينا نوعان من تعدد الأشكال.

  • ترجمة تعدد الأشكال الزمني
  • تشغيل وقت تعدد الأشكال

مثال:

باستخدام فئة عامة من النظام حيوان {public string color = 'white'} فئة عامة الكلب: حيوان {public string color = 'black'} فئة عامة TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( د. اللون)}}

//انتاج:

أبيض

ميراث

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

مثال للوراثة ذات المستوى الواحد

باستخدام مساحة اسم النظام RectangleApplication {class Rectangle {المحمي double length ، double width public Rectangle (double l، double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Length: {0}'، length) Console.WriteLine ('Width: {0}'، width) Console.WriteLine ('Area: {0}'، GetArea ())}} class Tabletop: Rectangle {private منضدية عامة مزدوجة التكلفة (l، double w): base (l، w) {} GetCost العامة المزدوجة () {double cost cost = GetArea () * 70 return cost} public void Display () {base.Display () Console .WriteLine ('Cost: {0}'، GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5، 7.5) t.Display () Console.ReadLine () }}}

//انتاج:

الطول: 4.5
العرض: 7.5
المساحة: 33.75
التكلفة: 2362.5

مثال على الميراث متعدد المستويات

باستخدام مساحة اسم النظام InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} المحمية int width المحمي int height} الواجهة العامة PaintCost {int getCost (int area)} class Rectangle: Shape، PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Total area: {0}'، Rect.getArea ()) Console.WriteLine ('Total تكلفة الطلاء: $ {0} '، Rect.getCost (area)) Console.ReadKey ()}}}

//انتاج:

المساحة الإجمالية: 35
إجمالي تكلفة الطلاء: 2450 دولارًا

التحميل الزائد

التحميل الزائد هو حالة يكون لدينا فيها عضوان أو أعضاء أعلنوا باستخدام نفس الاسم. التحميل الزائد ممكن أيضًا عندما نعلن عن طريقتين أو أكثر بنفس الاسم أيضًا. دعونا نتحقق من أمثلة على حد سواء.

العضو الزائد

مثال:

باستخدام فئة النظام العامة Edureka {public static int add (int a، int b) {return a + b} public static int add (int a، int b، int c) {return a + b + c}} public class TestMemberOverloading { فراغ ثابت عام رئيسي () {Console.WriteLine (Edureka.add (12، 23)) Console.WriteLine (Edureka.add (12، 23، 25))}}

//انتاج:

35
60

طريقة التحميل الزائد

مثال:

باستخدام فئة النظام العامة Edureka {public static int add (int a، int b) {return a + b} public static float add (float a، float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12، 23)) Console.WriteLine (Edureka.add (12.4f، 21.3f))}}

//انتاج:

35
33.699997

تجاوز

التجاوز هو الموقف الذي تحدد فيه الفئة الفرعية نفس الطريقة التي يحددها الوالد أيضًا. دعونا نفهم هذا من خلال مثال صغير.

مثال:

باستخدام فئة النظام العام Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Overriding {public static void Main () {Dog d = new Dog () d.eat ()}}

//انتاج:

تناول الطعام

مساحة الاسم

ال مساحة الاسم يستخدم أساسًا للتعامل مع فئات متعددة موجودة في البرنامج. مساحة الاسم متاحة بطرق مختلفة.

  • النظام. هنا ، النظام يصبح مساحة الاسم
  • للوصول إلى فئة مساحة الاسم ، نحتاج إلى استخدام اسم المجال.
  • يمكننا استخدام باستخدام الكلمات الرئيسية كذلك.

مثال:

باستخدام النظام باستخدام مساحة الاسم الثانية أولاً {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} مساحة الاسم الثانية {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} مساحة اسم فئة عامة {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//انتاج:

مرحبا بكم في Edureka
تعلم سعيد

عمليات الملف

ال عمليات الملف متوفرة في C # كالتالي:

عملية وصف
ثنائي ريدر يقرأ البيانات الأولية من دفق ثنائي.
بيناريريتر يكتب البيانات البدائية بتنسيق ثنائي.
BufferedStream تخزين مؤقت لتيار من البايت.
الدليل يساعد في معالجة بنية الدليل.
دليل المعلومات تستخدم لإجراء عمليات على الدلائل.
DriveInfo يوفر معلومات لمحركات الأقراص.
ملف يساعد في معالجة الملفات.
معلومات الملف يستخدم لإجراء عمليات على الملفات.
تيار ملف تستخدم للقراءة والكتابة إلى أي مكان في الملف.
MemoryStream يستخدم للوصول العشوائي إلى البيانات المتدفقة المخزنة في الذاكرة.
مسار ينفذ عمليات على معلومات المسار.
StreamReader تستخدم لقراءة الأحرف من دفق بايت.
StreamWriter يستخدم لكتابة الأحرف إلى تيار.
StringReader يستخدم للقراءة من مخزن سلسلة.
StringWriter يستخدم للكتابة في مخزن سلسلة.

وضع الملف

ال وضع الملف هو عداد يحدد طرق فتح الملفات المتعددة. يتم وصف أعضاء FileMode Enumerator على النحو التالي:

  • ألحق: يفتح ملفًا موجودًا ويضع المؤشر في نهاية الملف ، أو ينشئ الملف إذا كان الملف غير موجود.
  • خلق: إنه مصمم لإنشاء ملف جديد.
  • خلق جديد إبداع جديد: إنه مصمم ليحدد لنظام التشغيل أنه يجب أن ينشئ ملفًا جديدًا.
  • افتح: إنه مصمم لفتح ملف موجود.
  • فتح أو إنشاء: إنه مصمم لتحديد نظام التشغيل الذي يجب عليه فتح ملف إذا كان موجودًا ، وإلا فإنه يجب إنشاء ملف جديد.
  • اقتطاع: يفتح Truncate ملفًا موجودًا ويقتطع حجمه إلى صفر بايت.

FileAccess

FileAccess العداد يستخدم للوصول إلى ملف معين. لديها الأعضاء التالية أسماؤهم.

  • اقرأ
  • أكتب
  • قراءة و كتابة

FileShare

ال مشاركة الملفات العداد يستخدم لمشاركة ملف معين. لديها الأعضاء التالية أسماؤهم.

  • موروث: غير قابل للتوريث يسمح لمقبض الملف بتمرير وراثة إلى العمليات التابعة.
  • لا شيء: لا أحد يرفض مشاركة الملف الحالي
  • اقرأ: تسمح القراءة بفتح الملف للقراءة.
  • قراءة و كتابة: يسمح ReadWrite بفتح الملف للقراءة والكتابة.
  • أكتب: الكتابة تسمح بفتح الملف للكتابة.

الأحداث

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

الناشر

إلى الناشر يحتوي على تعريف الحدث والمفوض. ال مندوب الحدث يتم تعريف الارتباط في هذا الكائن. أ الناشر يستدعي كائن الفئة الحدث ويتم إخطار كائنات أخرى به.

مشترك

إلى مشترك يقبل الحدث ويقدم معالج الحدث. ال مندوب في فئة الناشر تستدعي الطريقة / الحدث معالج من فئة المشتركين.

مثال:

باستخدام مساحة اسم النظام Edureka {سلسلة المفوض العام Del (سلسلة str) فئة EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} سلسلة عامة WelcomeUser (اسم مستخدم السلسلة) {return 'Welcome To Edureka . '+ username} ثابت باطل رئيسي (سلسلة [] أرجس) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning) Console.WriteLine (نتيجة)}}}

//انتاج:

مرحبا بكم في Edureka. تعلم سعيد

علم الوراثة

علم الوراثة هو مفهوم لتزويد أعضاء وطرق الفصل مع أصحاب المكان في مدة العرض. يمكننا تحديد علم الوراثة باستخدام اقواس. دعونا نتحقق من الأمثلة التالية.

علم الوراثة في الفصل

باستخدام مساحة اسم النظام Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('هذه الرسالة من فئة عامة' ) GenericClass genI = new GenericClass (123) GenericClass getCh = new GenericClass ('E')}}}

//انتاج:

هذه الرسالة من فئة عامة
123
يكون

علم الوراثة في طريقة

باستخدام مساحة اسم النظام Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This الرسالة من الطريقة العامة ') genC.Show (321) genC.Show (' H ')}}}

//انتاج:

هذه الرسالة من الطريقة العامة
321
ح

المندوبين

ال مندوب بمثابة مرجع للطريقة. في الأساس هو نفس ملف مؤشر الوظيفة في C و C ++ ولكن أفضل بكثير وآمن من النوع. المندوب في طريقة ثابتة يغلف الطريقة فقط. بينما المندوب في نموذج الطريقة تغلف كلا من الأسلوب والمثال. أفضل استخدام للمفوض هو استخدامه كملف حدث.

مثال:

باستخدام آلة حاسبة مفوض النظام int (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('بعد الحاسبة مندوب واحد ، الرقم الجديد هو: '+ getNumber ()) c2 (3) Console.WriteLine (' بعد مفوضين بالحاسبة ، الرقم الجديد هو: '+ getNumber ())}}

//انتاج:

بعد الآلة الحاسبة ، يكون المندوب الجديد هو: 45
بعد استخدام الآلة الحاسبة لمندوبين ، يكون الرقم الجديد: 135

انعكاس

الانعكاس مطلوب للحصول على البيانات الوصفية في وقت التشغيل. المرجع متاح في النظام. التفكير مساحة الاسم. يتطلب تنفيذ الفئات التالية.

  • اكتب
  • MemberInfo
  • ConstructorInfo
  • طريقة المعلومات
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • وحدة
  • المجسم
  • اسم التجمع
  • المؤشر

اكتب فئة

تمثل فئة النوع C # إعلانات النوع لأنواع الفئات وأنواع الواجهة وأنواع التعداد وأنواع المصفوفات وأنواع القيم

اكتب خصائص

تم ذكر قائمة بالخصائص المهمة لفئات النوع أدناه.

خاصية وصف
المجسم يحصل على التجميع لهذا النوع.
AssemblyQualifiedName الحصول على اسم التجميع المؤهل لهذا النوع.
السمات يحصل على السمات المرتبطة بالنوع.
نوع القاعدة يحصل على النوع الأساسي أو الأصل.
الاسم الكامل الحصول على الاسم المؤهل بالكامل للنوع.
IsAbstract يستخدم للتحقق مما إذا كان النوع هو Abstract.
IsArray يستخدم للتحقق مما إذا كان النوع هو Array.
IsClass يستخدم للتحقق مما إذا كان النوع هو Class.
IsEnum يُستخدم للتحقق مما إذا كان النوع هو Enum.
IsInterface يستخدم للتحقق مما إذا كان النوع هو Interface.
متداخل يُستخدم للتحقق مما إذا كان النوع متداخلًا.
بدائي يُستخدم للتحقق مما إذا كان النوع بدائيًا.
IsPointer يستخدم للتحقق مما إذا كان النوع هو المؤشر.
IsNotPublic يستخدم للتحقق مما إذا كان النوع ليس عام.
عامة يستخدم للتحقق مما إذا كان النوع عام.
مغلق يستخدم للتحقق مما إذا كان النوع مختومًا.
قابل للتسلسل يستخدم للتحقق مما إذا كان النوع قابل للتسلسل.
نوع العضو يُستخدم للتحقق مما إذا كان النوع هو نوع العضو من النوع المتداخل.
وحدة يحصل على وحدة من النوع.
اسم يحصل على اسم النوع.
مساحة الاسم يحصل على مساحة الاسم من النوع.
خاصية وصف
GetConstructors () ترجع جميع المنشئات العامة للنوع.
GetConstructors (BindingFlags) ترجع جميع المنشئات للنوع مع BindingFlags المحدد.
GetFields () ترجع جميع الحقول العامة للنوع.
GetFields (BindingFlags) ترجع جميع المنشئات العامة للنوع مع BindingFlags محددة.
GetMembers () إرجاع كافة أعضاء الجمهور للنوع.
GetMembers (BindingFlags) ترجع جميع أعضاء النوع مع BindingFlags المحدد.
GetMethods () ترجع جميع الطرق العامة للنوع.
GetMethods (BindingFlags) ترجع جميع أساليب النوع مع BindingFlags المحدد.
GetProperties () ترجع جميع الخصائص العامة للنوع.
GetProperties (BindingFlags) ترجع جميع خصائص النوع مع BindingFlags المحدد.
GetType () يحصل على النوع الحالي.
GetType (سلسلة) يحصل على النوع للاسم المحدد.

أمثلة على الانعكاس:

احصل على النوع

مثال:

باستخدام GetType فئة النظام العامة {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//انتاج:

النظام.Int32

احصل على التجميع

مثال:

باستخدام النظام باستخدام System.Reflection public class GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//انتاج:

System.Private.CoreLib ، الإصدار = 4.0.0.0 ، الثقافة = محايد ، PublicKeyToken = 7cec85d7bea7798e

معلومات نوع الطباعة

مثال:

باستخدام النظام باستخدام System.Reflection public class PrintType {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}

//انتاج:

صحيح
خاطئة
خاطئة

منشئي الطباعة

مثال:

باستخدام النظام باستخدام System.Reflection public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Constructors of {0} type ...'، t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c in ci) {Console.WriteLine (c)}}}

//انتاج:

منشئو النظام نوع السلسلة ...
دكتور باطل (شار [])
Void .ctor (Char []، Int32، Int32)
برنامج باطل (Char *)
Void .ctor (Char *، Int32، Int32)
برنامج باطل (SByte *)
Void .ctor (SByte * ، Int32 ، Int32)
برنامج باطل (SByte * ، Int32 ، Int32 ، System.Text.Encoding)
Void .ctor (Char، Int32)
باطل .ctor (System.ReadOnlySpan`1 [System.Char])

طرق الطباعة

مثال:

باستخدام النظام باستخدام System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('طرق {0} النوع ...'، t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m in ci) {Console.WriteLine (m)}}}

//انتاج:

طرق النظام نوع السلسلة ...
System.String استبدال (System.String ، System.String)
System.String [] انقسام (Char ، System.StringSplitOptions)
System.String [] انقسام (Char ، Int32 ، System.StringSplitOptions)
System.String [] انقسام (Char [])
System.String [] انقسام (Char [] ، Int32)
System.String [] Split (Char [] ، System.StringSplitOptions)
System.String [] انقسام (Char [] ، Int32 ، System.StringSplitOptions)
System.String [] انقسام (System.String ، System.StringSplitOptions)
System.String [] انقسام (System.String ، Int32 ، System.StringSplitOptions)
System.String [] انقسام (System.String [] ، System.StringSplitOptions)
System.String [] انقسام (System.String [] ، Int32 ، System.StringSplitOptions) ......

حقول الطباعة

مثال:

باستخدام النظام باستخدام System.Reflection public class PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Fields of {0} type ...'، t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

//انتاج:

مجالات النظام.نوع السلسلة ...
System.String فارغ

الآن ، دعنا ننتقل إلى بعض مفاهيم البرمجة C # المتقدمة

مفاهيم C # المتقدمة

وظيفة مجهولة

الوظيفة التي تفتقر إلى اسم محدد تسمى مجهول المهام. هناك نوعان من الدوال المجهولة متوفرة في C #

  • تعابير لامدا
  • طرق مجهولة

مثال:

باستخدام مساحة اسم النظام LambdaExpressions {class Edureka {التفويض int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + ي)}}}

//انتاج:

مربع: 625

طرق مجهولة

ال طريقة مجهولة يوفر نفس وظائف ملف تعبير لامدا ، إلا أنه يسمح لنا بتجاهل قائمة المعلمات.

مثال:

باستخدام مساحة اسم النظام AnonymousMethods {class Program {public التفويض void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = التفويض () {Console.WriteLine ('This is anonymous function')} fun ()}}}

//انتاج:

هذه وظيفة مجهولة

متعدد الخيوط

تعد عملية تعدد مؤشرات الترابط عملية يتم فيها إنشاء سلاسل رسائل متعددة وتعيينها لمهام مختلفة. هذا يوفر الوقت عن طريق تنفيذ وظائف متعددة في وقت واحد. فئة multithreading متاحة في النظام مساحة الاسم.

System.Threading Namespace

ال النظام يحتوي مساحة الاسم على فئات وواجهات لتسهيل تعدد مؤشرات الترابط. يوفر فئات لمزامنة مورد الخيط. فيما يلي قائمة بالفئات شائعة الاستخدام:

  • مسلك
  • موتكس
  • الموقت
  • مراقب
  • سيمافور
  • الموضوع المحلي
  • تجمع موضوع
  • متطايره

العملية والخيط

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

دورة حياة الخيط

كل خيط له دورة حياة. يتم تحديد دورة حياة مؤشر الترابط في فئة System.Threading.Thread. فيما يلي مراحل دورة حياة أي مؤشر ترابط.

  • لم يبدأ
  • قابل للتشغيل (جاهز للتشغيل)
  • ادارة
  • غير قابل للتشغيل
  • ميت

توفر فئة مؤشر الترابط الخصائص والأساليب التالية على النحو التالي.

خصائص الموضوع

خاصية وصف
CurrentThread إرجاع مثيل الموضوع قيد التشغيل حاليًا.
حي يتحقق ما إذا كان الموضوع الحالي على قيد الحياة أم لا.
IsBackground للحصول على / تعيين قيمة الموضوع الحالي في الخلفية أم لا.
ManagedThreadId يُستخدم للحصول على المعرف الفريد لسلسلة الرسائل المُدارة حاليًا.
اسم يستخدم للحصول على أو تعيين اسم الموضوع الحالي.
أفضلية يستخدم للحصول على أو تعيين أولوية الموضوع الحالي.
ThreadState تُستخدم لإرجاع قيمة تمثل حالة مؤشر الترابط.

طرق الخيط

طريقة وصف
الإجهاض() يستخدم لإنهاء الموضوع. يرفع ThreadAbortException.
قاطع () يستخدم لمقاطعة الخيط الموجود في حالة WaitSleepJoin.
انضم() يستخدم لحظر كافة مؤشرات الترابط الاستدعاء حتى ينتهي هذا الموضوع.
ResetAbort () يستخدم لإلغاء طلب إحباط لمؤشر الترابط الحالي.
استئنف() يستخدم لاستئناف الموضوع المعلق. لقد عفا عليها الزمن.
النوم (Int32) يستخدم لتعليق مؤشر الترابط الحالي للملي ثانية المحدد.
بداية() يغير الحالة الحالية لمؤشر الترابط إلى Runnable.
تعليق() يوقف الموضوع الحالي إذا لم يتم تعليقه. لقد عفا عليها الزمن.
يخضع أو يستسلم() يستخدم لإعطاء تنفيذ الموضوع الحالي إلى موضوع آخر.

مثال الموضوع الرئيسي

باستخدام النظام باستخدام System.Threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//انتاج:

موضوع الرئيسي

معالجة الاستثناء

ال استثناء هو خطأ ألقى به البرنامج في وقت التشغيل. نقوم بمعالجة الاستثناءات لجعل استثناءات برنامجنا مجانية.

استثناء وصف
System.DivideByZeroException حدث خطأ بقسمة رقم على صفر.
System.NullReferenceException يعالج الخطأ الناتج عن الرجوع إلى الكائن الفارغ.
System.InvalidCastException يعالج الخطأ الناتج عن تلبيس غير صالح.
System.IO.IOException يعالج أخطاء الإدخال / الإخراج.
System.FieldAccessException تم إنشاء خطأ عن طريق وصول خاص / محمي غير صالح.

في C # ، نستخدم 4 كلمات رئيسية لأداء معالجة الاستثناء:

  • محاولة
  • قبض على
  • أخيرًا و
  • يرمي
مثال:
باستخدام فئة النظام العامة EdurekExample {public static void Main (سلسلة [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('هذه الرسالة من catch block')}}

//انتاج:

System.DivideByZeroException: تمت محاولة القسمة على صفر.
في ExExaEdurekample.Main (سلسلة [] args) في F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: سطر 10
هذه الرسالة من catch block

مثال الاستثناء المخصص

باستخدام فئة النظام العامة InvalidAgeException: استثناء {public InvalidAgeException (String message): base (message) {}} public class مخصصة {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

//انتاج:

InvalidAgeException: عذرًا ، من المتوقع أن يكون العمر أكبر من 18 عامًا
في Custom.validate (Int32 age) في F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: السطر 18
في Custom.Main (String [] args) في F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: سطر 23
يتم تنفيذ كتلة الصيد الآن.

أخيرًا حظر المثال

باستخدام فئة النظام العامة FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} أخيرًا {Console .WriteLine ('تم تنفيذ الكتلة أخيرًا')} Console.WriteLine ('تم تنفيذ كتلة الصيد')}}

//انتاج:

System.DivideByZeroException: تمت محاولة القسمة على صفر.
في FinalExecption.Main (String [] args) في F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: سطر 10
أخيرًا يتم تنفيذ الكتلة
تم تنفيذ كتلة الصيد

توقيع استثناء النظام

[SerializableAttribute] [ComVisibleAttribute (صحيح)] فئة عامة SystemException: استثناء

منشئو استثناءات النظام

باني وصف
SystemException () يتم استخدامه لتهيئة مثيل جديد لفئة SystemException.
SystemException

(SerializationInfo، StreamingContext)

يتم استخدامه لتهيئة مثيل جديد لفئة SystemException ببيانات متسلسلة.
SystemException (سلسلة) يتم استخدامه لتهيئة مثيل جديد لفئة SystemException برسالة خطأ محددة.
SystemException (سلسلة ، استثناء) يتم استخدامه لتهيئة مثيل جديد لفئة SystemException برسالة خطأ محددة ومرجع إلى الاستثناء الداخلي الذي هو سبب هذا الاستثناء.

خصائص استثناء النظام

خاصية وصف
البيانات يتم استخدامه للحصول على مجموعة من أزواج المفاتيح / القيمة التي توفر معلومات إضافية يحددها المستخدم حول الاستثناء.
HelpLink يتم استخدامه للحصول على أو تعيين ارتباط إلى ملف التعليمات المرتبط بهذا الاستثناء.
HResult يتم استخدامه للحصول على HRESULT أو تعيينها ، وهي قيمة رقمية مشفرة يتم تعيينها لاستثناء محدد.
الاستثناء الداخلي يتم استخدامه للحصول على مثيل الاستثناء الذي تسبب في الاستثناء الحالي.
رسالة يتم استخدامه للحصول على رسالة تصف الاستثناء الحالي.
مصدر يتم استخدامه للحصول على اسم التطبيق الذي يسبب الخطأ أو تعيينه.
تتبع المكدس يتم استخدامه للحصول على تمثيل سلسلة من الإطارات الفورية على مكدس الاستدعاء.
الموقع المستهدف يتم استخدامه للحصول على الطريقة التي تطرح الاستثناء الحالي.

طرق استثناء النظام

طرق وصف
يساوي (كائن) يتم استخدامه للتحقق من أن الكائن المحدد يساوي الكائن الحالي أم لا.
إنهاء () يتم استخدامه لتحرير الموارد وإجراء عمليات التنظيف.
GetBaseException () يتم استخدامه للحصول على استثناء الجذر.
GetHashCode () يتم استخدامه للحصول على كود التجزئة.
GetObjectData

(SerializationInfo، StreamingContext)

يتم استخدامه للحصول على بيانات الكائن.
GetType () يتم استخدامه للحصول على نوع وقت التشغيل للمثيل الحالي.
MemberwiseClone () يتم استخدامه لإنشاء نسخة ضحلة من الكائن الحالي.
إلى سلسلة() يتم استخدامه لإنشاء وإرجاع تمثيل سلسلة من الاستثناء الحالي.

مثال استثناء النظام

باستخدام مساحة اسم النظام CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//انتاج:

System.IndexOutOfRangeException: كان الفهرس خارج حدود المصفوفة.
في CSharpProgram.SystemExceptionExample.Main (سلسلة [] args) في F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: سطر 11

التزامن

قد تكون المزامنة تقنية تمكن مؤشر ترابط واحد فقط من الوصول إلى المورد لفترة زمنية محددة. لن يتم مقاطعة أي مؤشر ترابط بديل حتى ينتهي مؤشر الترابط المعين من مهمته.

في برنامج multithreading ، يُسمح بالخيوطللوصول إلى أي مورد لـالتنفيذ المحددزمن. الخيوط تشارك الموارد وتنفذ بشكل غير متزامن. الوصول إلى الموارد المشتركة (البيانات)قد تكون مهمة مهمةبشكل عاميمكن أن يتوقفالنظام.لدينا ميل للتأثير عليهعن طريق إنشاء خيوط بطريقة متزامنة.

مثال بدون تزامن

باستخدام النظام باستخدام فئة System.Threading Edureka {public void PrintTable () {لـ (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

//انتاج:

واحد
واحد
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

مثال مع التزامن

باستخدام النظام باستخدام فئة System.Threading Edureka {public void PrintTable () {lock (this) {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

//انتاج:

واحد
2
3
4
5
6
7
8
9
10
واحد
2
3
4
5
6
7
8
9
10

ميزات جديدة

أضافت Microsoft العديد من الميزات الحديثة إلى لغة C # بعضها مذكور أدناه.

سي # 6.0

  • باستخدام التوجيه الثابت
  • مرشحات الاستثناءات
  • انتظر في الصيد / في النهاية كتل
  • مُهيئ خاصية السيارات
  • القيم الافتراضية لخصائص برنامج getter فقط
  • أعضاء التعبير
  • دعاية لاغية
  • سلسلة الاستيفاء
  • Nameof المشغل
  • مُهيئ القاموس
  • المترجم كخدمة (روزلين)

سي # 7.0

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

سي # 7.1

  • عدم التزامن الرئيسي
  • التعبيرات الافتراضية

أسئلة المقابلة على أساس C #

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

بهذا نصل إلى نهاية مقالة 'C # Tutorial'. أتمنى أن تكون قد فهمت أهمية هياكل البيانات ، وبناء الجملة ، والوظائف ، والعمليات التي يتم إجراؤها باستخدامها. الآن بعد أن فهمت أساسيات البرمجة في C # من خلال هذاC # تعليمي، تفحص ال التدريب المقدم بواسطة Edureka على العديد من التقنيات مثل Java ، ربيع والكثيرأكثر من ذلك ، حصلت شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم على سؤال لنا؟ أذكر ذلك في قسم التعليقات في مدونة 'C # Tutorial' وسنعاود الاتصال بك في أقرب وقت ممكن.