Latest web development tutorials

Метод C #

Один из способов это поставить некоторые соответствующие заявления, сгруппированных вместе для блока операторов для выполнения задачи. Каждая программа имеет по крайней мере C # класс с основным методом.

Для того, чтобы использовать метод, вам необходимо:

  • метод определения
  • Вызов метода

C # метод, как это определено в

При определении метода, принципиально говоря, это утверждение элементов структуры. В C #, метод определения синтаксис выглядит следующим образом:

<Access Тендерный> <Возвращаемый тип> <Имя метода> (Список параметров)
{
   Метод Body
}

Ниже приведены отдельные элементы:

  • Тендерный доступа: модификатор доступа, переменные решения или метод для другой видимости класса.
  • Тип возвращаемого значения :тип возвращаемого значения, метод может возвращать значение. Тип возвращаемого значения является тип данных значения, возвращаемого методом. Если метод не возвращает значения, тип возвращаемого значения являетсянедействительным.
  • Название метода: имя метода, является уникальным идентификатором, и является чувствительным к регистру.Она не может быть такой же, как другой идентификатор объявления класса.
  • Список параметров: список параметров, заключенных в скобки, параметр используется для передачи и приема данных метода.Список параметров Параметр типа относится к методу, порядок и количество. Параметр не является обязательным, то есть, метод не может содержать параметры.
  • Тело Метод: Метод тела, в том числе необходимость выполнения задач набора инструкций.

примеров

Следующий фрагмент кода показывает функцию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
   {
      общественное INT FindMax (INT num1, INT пит2)
      {
         / * Декларация Локальная переменная * /
         INT результат;

         если (num1> пит2)
            Результат = num1;
         еще
            Результат = пит2;

         возвращать результат;
      }
      статической силы основных (String [] агдз)
      {
         / * Определения локальных переменных * /
         Int А = 100;
         INT B = 200;
         INT RET;
         NumberManipulator п = новый NumberManipulator ();

         // Вызываем метод FindMax RET = n.FindMax (а, б);
         Console.WriteLine ( "Макс: {0}", RET);
         Console.ReadLine ();
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Максимальное значение: 200

Вы можете также другие типы публичных методов экземпляра класса вызывается из другого класса. Например, методFindMaxпринадлежит классуNumberManipulator,вы можете вызвать его из другого классаTestв.

с помощью системы;

Пространство имен CalculatorApplication
{
    класс NumberManipulator
    {
        общественное INT FindMax (INT num1, INT пит2)
        {
            / * Декларация Локальная переменная * /
            INT результат;

            если (num1> пит2)
                Результат = num1;
            еще
                Результат = пит2;

            возвращать результат;
        }
    }
    класс испытаний
    {
        статической силы основных (String [] агдз)
        {
            / * Определения локальных переменных * /
            Int А = 100;
            INT B = 200;
            INT RET;
            NumberManipulator п = новый NumberManipulator ();
            // Вызываем метод FindMax RET = n.FindMax (а, б);
            Console.WriteLine ( "Макс: {0}", RET);
            Console.ReadLine ();

        }
    }
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

最大值是: 200

Рекурсивные вызовы методов

Метод может вызвать сам. Это называетсярекурсией.В следующем примере используется рекурсивную функцию для вычисления факториала числа:

с помощью системы;

Пространство имен CalculatorApplication
{
    класс NumberManipulator
    {
        общественное INT факториала (INT Num)
        {
            / * Определения локальных переменных * /
            INT результат;

            если (Num == 1)
            {
                возвращает 1;
            }
            еще
            {
                Результат = факториала (Num - 1) * Num;
                возвращать результат;
            }
        }
    
        статической силы основных (String [] агдз)
        {
            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
   {
      общественного недействительными своп (ссылка INT х, исх INT у)
      {
         INT Темп;

         Темп = х; / * сохранить значение х * /
         х = у; / * у присваивается х * /
         у = темп; / * задание температуры до у * /
       }
   
      статической силы основных (String [] агдз)
      {
         NumberManipulator п = новый NumberManipulator ();
         / * Определения локальных переменных * /
         Int А = 100;
         INT B = 200;

         Console.WriteLine ( "Перед обменом, значение: {0}", а);
         Console.WriteLine ( "Перед обменом, б значения: {0}", б);

         / * Вызов функции для обмена значением * /
         n.swap (REF A реф б);

         Console.WriteLine ( "После обмена, значение: {0}", а);
         Console.WriteLine ( "После обмена, б значения: {0}", б);
 
         Console.ReadLine ();

      }
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

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

Результаты показали , что значение функцииподкачкив изменении, и это изменение может быть отражено вглавнойфункции.

Передача параметров по выходу

оператор возврата может использоваться только для возврата значения из функции. Тем не менее, вы можете использоватьвыходной параметр , чтобы вернуть два значения из функций.Метод вывода данных выходной параметр будет назначать свои собственные, и другие подобные ссылки на параметры.

Следующий пример иллюстрирует этот момент:

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