Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретический_курс.doc
Скачиваний:
37
Добавлен:
10.11.2019
Размер:
7.68 Mб
Скачать

3.7. Понятие «Метод» и «Свойство»

3.7.1. Понятие «Метод» Понятие «Метод»

1. Понятие «Метод»

Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. В C# все инструкции выполняются в контексте метода. Например, метод Main является точкой входа для каждого приложения C#, и вызывается он средой CLR при запуске программы. Не стоит путать методы и анонимные методы (последние реализуются через делегаты).

2. Сигнатура метода

Методы объявляются в классе или в структуре путём указания уровня доступа, например public или private, необязательных модификаторов, например abstract или sealed, возвращаемого значения, имени метода и списка параметров этого метода. Все вместе эти элементы образуют сигнатуру метода.

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

Параметры метода заключаются в круглые скобки и разделяются запятыми. Пустые скобки указывают на то, что у метода нет параметров. Следующий класс (абстрактный) содержит три метода (в комментариях содержат слова «Действия метода»):

abstract class Motorcycle

{

// Может вызвать кто-угодно

public void StartEngine() {/* Действия метода */ }

// Только производные классы могут вызвать метод

protected void AddGas(int gallons) { /* Действия метода */ }

// Производные классы могут переопределить реализацию метода из базового класса (текущую реализацию)

public virtual int Drive(int miles, int speed) { /* Действия метода */ return 1; }

// Производные классы должны реализовать это

public abstract double GetTopSpeed();

}

3. Доступ к методам

Вызов метода объекта очень похож на обращение к полю. После имени объекта ставится точка, затем имя метода и скобки. В скобках перечисляются аргументы, разделенные запятыми. Таким образом, методы класса Motorcycle можно вызывать так, как показано в следующем примере:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace LC_Console

{

abstract class Motorcycle

{

// Может вызвать кто-угодно

public void StartEngine() {/* Действия метода */ }

// Только производные классы могут вызвать метод

protected void AddGas(int gallons) { /* Действия метода */ }

// Производные классы могут переопределить реализацию метода из базового класса (текущую реализацию)

public virtual int Drive(int miles, int speed) { /* Действия метода */ return 1; }

// Производные классы должны реализовать это

public abstract double GetTopSpeed();

}

class TestMotorcycle : Motorcycle

{

public override double GetTopSpeed()

{

return 108.4;

}

static void Main()

{

TestMotorcycle moto = new TestMotorcycle();

moto.StartEngine();

moto.AddGas(15);

moto.Drive(5, 20);

double speed = moto.GetTopSpeed();

Console.WriteLine("Максимальная скорость составляет: {0}", speed);

// Выведет: Максимальная скорость составляет: 108.4

Console.WriteLine("Для продолжения нажмите любую клавишу . . ."); ;

Console.ReadKey();

}

}

}