في C # ، تعد الدالة طريقة لرمز التعبئة تقوم بعمل شيء ثم ترجع القيمة. على عكس C ، C ++ وبعض اللغات الأخرى ، لا توجد وظائف في حد ذاتها. هم جزء من وجوه المنحى نهج البرمجة.
قد يتضمن برنامج لإدارة جداول البيانات دالة sum () كجزء من كائن ، على سبيل المثال.
في C # ، يمكن تسمية وظيفة دالة عضو - وهي عضو في فئة - ولكن هذا المصطلح ترك من C ++. الاسم المعتاد هو طريقة.
طريقة المثيل
هناك نوعان من الطرق: طريقة المثيل وطريقة ثابتة. تغطي هذه المقدمة طريقة المثيل.
يحدد المثال أدناه فئة بسيطة ويسميها اختبار. هذا المثال هو برنامج وحدة تحكم بسيط ، لذلك يُسمح بذلك. عادة ، يجب أن تكون الفئة الأولى المحددة في ملف C # هي فئة النموذج.
من الممكن أن يكون لديك صف فارغ مثل هذا اختبار الفصل {}، لكنها ليست مفيدة. على الرغم من أنها تبدو فارغة ، إلا أنها - مثل جميع فئات C # - ترث من الكائن الذي يحتوي عليها وتتضمن افتراضيًا البناء في البرنامج الرئيسي.
var t = اختبار جديد () ؛
يعمل هذا الرمز ، لكنه لن يفعل أي شيء عند تشغيله باستثناء إنشاء مثيل ر من فئة الاختبار الفارغة. يضيف الكود أدناه دالة ، وهي طريقة تنتج كلمة "Hello".
باستخدام النظام ؛
مساحة الاسم funcex1
{
اختبار الصف
{
الفراغ العام SayHello ()
{
وحدة التحكم. WriteLine ("مرحبًا") ؛
}
}
برنامج الطبقة
{
الفراغ الثابت الرئيسي (سلسلة [] قوس)
{
var t = اختبار جديد () ؛
ر. قل مرحبا() ؛
وحدة التحكم. مفتاح قراءة() ؛
}
}
}
يتضمن هذا المثال رمز وحدة التحكم. مفتاح قراءة()، لذلك عند تشغيله ، فإنه يعرض نافذة وحدة التحكم وينتظر إدخال مفتاح مثل Enter أو Space أو Return (وليس مفاتيح shift أو Alt أو Ctrl). بدونه ، سيفتح نافذة وحدة التحكم ، ويخرج "مرحبًا" ثم يغلق الكل في غمضة عين.
الوظيفة قل مرحبا هي وظيفة بسيطة بقدر ما تستطيع. إنها وظيفة عامة ، مما يعني أن الوظيفة مرئية من خارج الفصل.
إذا قمت بإزالة الكلمة عامة ومحاولة تجميع التعليمات البرمجية ، يفشل مع خطأ ترجمة "funcex1.test. يتعذر الوصول إلى SayHello () 'نظرًا لمستوى الحماية الخاص بها. "إذا أضفت كلمة" خاص "حيث كانت الكلمة" عامة "وأعيد تجميعها ، فستحصل على نفس خطأ الترجمة. ما عليك سوى تغييره مرة أخرى إلى "عام".
الكلمة باطل في الدالة يعني أن الدالة لا تُرجع أي قيم.
خصائص تعريف الوظيفة النموذجية
- مستوى الوصول: عام ، خاص بالإضافة إلى البعض الآخر
- قيمة الإرجاع>: باطلة أو أي نوع مثل int
- اسم الطريقة: SayHello
- أي معلمات طريقة: لا شيء في الوقت الحالي. يتم تعريفها في الأقواس () بعد اسم الطريقة
رمز تعريف وظيفة أخرى ، MyAge () ، هو:
الجمهور الدولي MyAge ()
{
عودة 53 ؛
}
أضف هذا الحق بعد قل مرحبا() الطريقة في المثال الأول وإضافة هذين الخطين من قبل وحدة التحكم. مفتاح قراءة().
فار العمر = ر. عمري()؛
وحدة التحكم. WriteLine ("عمر ديفيد {0} سنة" ، العمر) ؛
يؤدي تشغيل البرنامج الآن إلى إخراج هذا:
مرحبا
يبلغ ديفيد من العمر 53 عامًا ،
ال فار العمر = ر. عمري()؛ إرجاع استدعاء الأسلوب القيمة 53. إنها ليست الوظيفة الأكثر فائدة. مثال أكثر فائدة هو الدالة Sum جدول البيانات مع صفيف أحبارومؤشر البدء وعدد القيم المطلوب جمعها.
هذه هي الوظيفة:
تعويم عام Sum (قيم int [] ، int startindex ، int endindex)
{
var var = 0 ؛
for (var index = startindex؛ فهرس <= endindex ؛ index ++)
{
المجموع + = القيم [فهرس] ؛
}
إجمالي العائد ؛
}
هنا ثلاث حالات استخدام. هذا هو الرمز المراد إضافته في Main () واستدعاء لاختبار دالة Sum.
var value = new int [10] {1، 2، 3، 4، 5، 6، 7، 8، 9،10} ؛
وحدة التحكم. اكتب خط (ر. Sum (القيم ، 0،2)) ؛ // يجب أن يكون 6
وحدة التحكم. اكتب خط (ر. Sum (القيم ، 0،9)) ؛ // يجب أن يكون 55
وحدة التحكم. اكتب خط (ر. Sum (القيم ، 9 ، 9)) ؛ // يجب أن تكون 10 لأن القيمة التاسعة هي 10
ولل عقدة يضيف القيم الموجودة في النطاق startindex إلى endindex ، لذا بالنسبة لـ startindex = 0 و endindex = 2 ، هذا هو مجموع 1 + 2 + 3 = 6. بينما بالنسبة لـ 9،9 ، فإنه يضيف فقط القيم الواحدة [9] = 10.
داخل الوظيفة ، تتم تهيئة إجمالي المتغير المحلي إلى 0 ثم تتم إضافة الأجزاء ذات الصلة من قيم الصفيف.