Методы

  • Михаил
  • 12 мин. на прочтение
  • 81
  • 19 Dec 2016
  • 19 Dec 2016

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

Создание метода

Метод имеет следующую структуру:
 

<access modifier> <instance or static> <return type> <method name>(<paramenters>)
{
}

 

Примеры

Это пример метода, к которому может получить доступ каждый, обозначенный publicмодификатором доступа.
Возврата не имеет, указать voidключевым словом.
Имеет имя WriteToConsole.
И получает один параметр, обозначенныйstring message
 

public void WriteToConsole(string message)
{
  // code
}

 

Для метода Addон получает параметры value1и value2, оба типа int, и возвращает сумму обоих параметров, указанную returnключевым словом.
 

public int Add(int value1, int value2)
{
  return value1 + value2;
}

 

Разбираем эти примеры

Модификатор доступа

Access Modifierопределяет, как код может получить доступ к части вашего кода. Они используются не только для методов, но и для классов, свойств, перечислений и т.д.

В C# существует четыре типа модификаторов доступа:

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

Вы также можете комбинировать их, например:
 


// Accessed public inside the project
public internal ...

// Accessed inly by classes that inherit an inside the same project
protected internal

 

Статический против экземпляра

Метод, который не определен как статический с помощью staticключевого слова, всегда является методом экземпляра.

Пример

Чтобы получить доступ к Instanceметоду, во-первых, вам нужно создать экземпляр объекта, и он работает с данными экземпляра.

Давайте используем наш класс калькулятора в качестве примера:
 

public class Calculator
{
  public int Add(int x, int y)
  {
    return x + y;
  }
}

public static Main()
{
  Calculator calc = new Calculator();

  int result = calc.Add(5,6);
}

 

Теперь, чтобы проиллюстрировать, что такое данные экземпляра, давайте изменим наш класс калькулятора, наш новый класс калькулятора будет иметь свойства X и Y и метод без параметров.
 

public class Calculator
{
  public int X {get; set;}
  public int Y {get;set;}

  public int Add()
  {
    return X + Y;
  }
}

 

Чтобы использовать это:
 

static void Main()
{
  Calculator calc1 = new Calculator();
  calc1.X = 5;
  calc1.Y = 10;
  int result1 = calc1.Add();

  Calculator calc2 = new Calculator();
  calc2.X = 22;
  calc2.Y = 20;
  int result2 = calc2.Add();

  Console.WriteLine(result1); // Prints 15
  Console.WriteLine(result2); // Prints 42
}

 

Статический

Статический метод уникален для приложения, а это означает, что все будут использовать одну и ту же копию метода. Эти методы находятся на уровне типа, а не на уровне экземпляра.
 

public class Calculator
{
  public static int Add(int x, int y)
  {
    return x + y;
  }
}

public static void Main()
{
  // calling a static method.
  int result = Calculator.Add(5,6);
}

 

Класс экземпляра может иметь несколько статических методов/методов экземпляра.
Статический класс может иметь только статические методы и члены.
Статический метод нельзя вызывать из экземпляра объекта.

Типы возврата

Метод может возвращать значение вызывающей стороне, тип, возвращаемый методом, указывается перед именем метода, и они должны иметь returnключевое слово. voidметоды не возвращают значение.
 

public void ExecuteAndDoesNotReturnAValue()
{
  // code
{

public string ExecuteAndReturnsAValue()
{
  return "This method has a return value";
}

 

Параметры и аргументы

Параметры — это параметры, перечисленные в сигнатуре метода. Аргументы — это значения, передаваемые методу.
 

// The method signatures has parameters
// In this case, two paramenters, x and y
public int Add(int x, int y)
{
  return x + y;
}

 

public static Main()
{
  Calculator calc = new Calculator();

  // When calling the method, we pass **arguments** to its **paramenters**
  // in this scenario, we are passing 5 to x and 6 to y
  int result = calc.Add(5,6);
}

 

Полиморфизм

Полиморфизм — это когда один и тот же метод имеет несколько функций.
 

public class Calculator
{
  /// returns the sum of a and b
  public int Add(int a, int b)
  {
    return a + b;
  }

  // returns the sum of a, b and c
  public int Add(int a, int b, int c)
  {
    return a + b + c;
  }
}

 

В примере класс калькулятора имеет два метода для добавления значений, один из которых получает 2 аргумента, а другой — 3 аргумента.