Сравнение свойств и индексаторов



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Сравнение свойств и индексаторов



 

Индексаторы подобны свойствам. За исключением различий, перечисленных в следующей таблице, все правила, определенные для методов доступа к свойствам, применимы и к методам доступа к индексаторам:

 

Свойство Индексатор
Позволяет вызывать методы как открытые элементы данных Обеспечивает доступ к элементам внутренней коллекции объекта с помощью представления массива самого объекта
Доступ посредством простого имени Доступ посредством индекса
Допускаются статические члены или члены экземпляров Допускаются только члены экземпляров
Метод доступа get свойства не имеет параметров Метод доступа get индексатора имеет такой же список формальных параметров, как и индексатор
Метод доступа set свойства содержит неявный параметр value Метод доступа set индексатора имеет такой же список формальных параметров, как и индексатор, а также параметр value
Поддерживается сокращённый синтаксис и автоматически реализуемые свойства Сокращенный синтаксис не поддерживается

 

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

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

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

 

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

 

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

 

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

 

Методы объявляются в классе или в структуре путём указания уровня доступа, например 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();

}

 

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

 

Вызов метода объекта очень похож на обращение к полю. После имени объекта ставится точка, затем имя метода и скобки. В скобках перечисляются аргументы, разделенные запятыми. Таким образом, методы класса 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();

}

}

}

 



Последнее изменение этой страницы: 2016-12-28; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.231.243.21 (0.01 с.)