Latest web development tutorials

C # طريقة

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

لاستخدام أسلوب، تحتاج:

  • طريقة تعريف
  • استدعاء الأسلوب

C طريقة # النحو المحدد في

عند تحديد طريقة، تحدث اساسا، بل هو بيان لعناصر البنية. في C #، وطريقة تعريف الجملة على النحو التالي:

<الوصول الموصف> <نوع الإرجاع> <اسم الأسلوب> (قائمة المعلمة)
{
   الجسم طريقة
}

وفيما يلي العناصر الفردية:

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

أمثلة

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

class NumberManipulator
{
   public int FindMax(int num1, int num2)
   {
      /* 局部变量声明 */
      int result;

      if (num1 > num2)
         result = num1;
      else
         result = num2;

      return result;
   }
   ...
}

استدعاء الأساليب في C #

يمكنك استخدام اسم الأسلوب الاستدعاء. يوضح المثال التالي هذه النقطة:

باستخدام نظام.

مساحة CalculatorApplication
{
   الطبقة NumberManipulator
   {
      العام كثافة العمليات FindMax (الباحث NUM1، الباحث NUM2)
      {
         / * إعلان المتغير المحلي * /
         الباحث نتيجة.

         إذا (NUM1> NUM2)
            النتيجة = NUM1.
         آخر
            النتيجة = NUM2.

         إرجاع نتيجة.
      }
      ساكنة باطلة الرئيسية (سلسلة [] وسائط)
      {
         / * تعريفات متغير المحلية * /
         الباحث و= 100؛
         الباحث ب = 200؛
         أرجع الباحث.
         NumberManipulator ن = NumberManipulator الجديدة ()؛

         // دعوة FindMax طريقة المتقاعد = n.FindMax (أ، ب).
         Console.WriteLine ( "ماكس: {0}"، المتقاعد)؛
         Console.ReadLine ()؛
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

القيمة القصوى هي: 200

يمكنك أيضا أنواع أخرى من مثيل فئة الأساليب العامة استدعاؤها من فئة أخرى. على سبيل المثال، طريقةFindMaxتنتمي الطبقةNumberManipulator،يمكنك يطلق عليه مناختبارفئة أخرى في.

باستخدام نظام.

مساحة CalculatorApplication
{
    الطبقة NumberManipulator
    {
        العام كثافة العمليات FindMax (الباحث NUM1، الباحث NUM2)
        {
            / * إعلان المتغير المحلي * /
            الباحث نتيجة.

            إذا (NUM1> NUM2)
                النتيجة = NUM1.
            آخر
                النتيجة = NUM2.

            إرجاع نتيجة.
        }
    }
    فئة اختبار
    {
        ساكنة باطلة الرئيسية (سلسلة [] وسائط)
        {
            / * تعريفات متغير المحلية * /
            الباحث و= 100؛
            الباحث ب = 200؛
            أرجع الباحث.
            NumberManipulator ن = NumberManipulator الجديدة ()؛
            // دعوة FindMax طريقة المتقاعد = n.FindMax (أ، ب).
            Console.WriteLine ( "ماكس: {0}"، المتقاعد)؛
            Console.ReadLine ()؛

        }
    }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

最大值是: 200

استدعاءات الأسلوب العودية

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

باستخدام نظام.

مساحة CalculatorApplication
{
    الطبقة NumberManipulator
    {
        العامة كثافة العمليات مضروب (كثافة الأسطوانات)
        {
            / * تعريفات متغير المحلية * /
            الباحث نتيجة.

            إذا (الأسطوانات == 1)
            {
                العودة 1؛
            }
            آخر
            {
                النتيجة = مضروب (الأسطوانات - 1) * عدد الأسطوانات.
                إرجاع نتيجة.
            }
        }
    
        ساكنة باطلة الرئيسية (سلسلة [] وسائط)
        {
            NumberManipulator ن = NumberManipulator الجديدة ()؛
            // استدعاء الأسلوب Console.WriteLine مضروب ( "6 مضروب هو: {0}"، n.factorial (6))؛
            Console.WriteLine ( "7 مضروب هو: {0}"، n.factorial (7))؛
            Console.WriteLine ( "8 مضروب هو: {0}"، n.factorial (8))؛
            Console.ReadLine ()؛

        }
    }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

6 مضروب هو: 720
7 مضروب هو: 5040
8 مضروب هو: 40320

معلمة عابرة

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

方式描述
值参数这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
引用参数这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。
输出参数这种方式可以返回多个值。

يمر المعلمات من حيث القيمة

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

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

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void swap(int x, int y)
      {
         int temp;
         
         temp = x; /* 保存 x 的值 */
         x = y;    /* 把 y 赋值给 x */
         y = temp; /* 把 temp 赋值给 y */
      }
      
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a = 100;
         int b = 200;
         
         Console.WriteLine("在交换之前,a 的值: {0}", a);
         Console.WriteLine("在交换之前,b 的值: {0}", b);
         
         /* 调用函数来交换值 */
         n.swap(a, b);
         
         Console.WriteLine("在交换之后,a 的值: {0}", a);
         Console.WriteLine("在交换之后,b 的值: {0}", b);
         
         Console.ReadLine();
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

在交换之前,a 的值:100
在交换之前,b 的值:200
在交换之后,a 的值:100
在交换之后,b 的值:200

وأظهرت النتائج أنه حتى في تغيير وظيفة وقيمة، وقيمة أي تغيير قد حدث.

تمرير معلمات حسب المرجع

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

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

باستخدام نظام.
مساحة CalculatorApplication
{
   الطبقة NumberManipulator
   {
      تبادل باطلة العامة (المرجع كثافة العمليات خ، ذ المرجع كثافة العمليات)
      {
         الباحث درجة الحرارة.

         درجة الحرارة = س؛ / * حفظ قيمة x * /
         س = ص، يتم تعيين / * ص إلى س * /
         ذ = درجة الحرارة؛ / * تعيين درجة الحرارة إلى y * /
       }
   
      ساكنة باطلة الرئيسية (سلسلة [] وسائط)
      {
         NumberManipulator ن = NumberManipulator الجديدة ()؛
         / * تعريفات متغير المحلية * /
         الباحث و= 100؛
         الباحث ب = 200؛

         Console.WriteLine ( "قبل الصرف، قيمة: {0}"، أ).
         Console.WriteLine ( "قبل الصرف، والقيم ب: {0}"، ب).

         / * استدعاء الدالة على قيمة التبادل * /
         n.swap (المرجع لذلك، المرجع ب)؛

         Console.WriteLine ( "بعد تبادل، قيمة: {0}"، أ).
         Console.WriteLine ( "بعد تبادل والقيم ب: {0}"، ب).
 
         Console.ReadLine ()؛

      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

在交换之前,a 的值:100
在交换之前,b 的值:200
在交换之后,a 的值:200
在交换之后,b 的值:100

وأظهرت النتائج أن قيمة ظيفةالمبادلةفي التغيير، وهذا التغيير يمكن أن ينعكس فيوظيفة الرئيسية.

تمرير المعلمات بواسطة Output

بيان عودة يمكن استخدامها فقط لإرجاع قيمة من وظيفة. ومع ذلك، يمكنك استخدامالمعلمة الإخراج إلى العودة قيمتين من الوظائف.سيتم إخراج البيانات طريقة إخراج المعلمة تعيين الخاصة بهم، والبعض الآخر مع المعلمات إشارة مماثلة.

يوضح المثال التالي هذه النقطة:

using System;

namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void getValue(out int x )
      {
         int temp = 5;
         x = temp;
      }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a = 100;
         
         Console.WriteLine("在方法调用之前,a 的值: {0}", a);
         
         /* 调用函数来获取值 */
         n.getValue(out a);

         Console.WriteLine("在方法调用之后,a 的值: {0}", a);
         Console.ReadLine();

      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

在方法调用之前,a 的值: 100
在方法调用之后,a 的值: 5

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

using System;

namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void getValues(out int x, out int y )
      {
          Console.WriteLine("请输入第一个值: ");
          x = Convert.ToInt32(Console.ReadLine());
          Console.WriteLine("请输入第二个值: ");
          y = Convert.ToInt32(Console.ReadLine());
      }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a , b;
         
         /* 调用函数来获取值 */
         n.getValues(out a, out b);

         Console.WriteLine("在方法调用之后,a 的值: {0}", a);
         Console.WriteLine("在方法调用之后,b 的值: {0}", b);
         Console.ReadLine();
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج نتيجة التالية (اعتمادا على مدخلات المستخدم):

الرجاء إدخال قيمة:
7
الرجاء إدخال القيمة الثانية:
8
بعد استدعاء الأسلوب، قيمة: 7
بعد استدعاء الأسلوب، والقيم ب: 8