000136. Как делать функции c#- Часть 4

Как делать функции c#? Часть 4||wmysterio|wmysterio|wmysterio@yandex.ru|||Всем хай! Четвёртая часть по функциям я хотел-бы посвятить такому интересному явлению, как свойства. Собственно свойства это не совсем функции, так как играют другую роль, но всё-же они чем-то напоминают функции и решил добавить этот урок к этому блоку. Для того, что-бы написать свойство класса, достаточно написать следующий код:

СПЕЦИФИКАТОР_ДОСТУПА ТИП_СВОЙСТВА НАЗВАНИЕ_СВОЙСТВА { get { return ВОЗВРАЩАЕМЫЙ_ПАРАМЕТР; } set { ПРИНИМАЕМЫЙ_ПАРАМЕТР = value; } }

Со спецификатором доступа думаю всё понятно. Если не понятно, то читайте уроки блока по ООП. ТИП_СВОЙСТВА - тип значения, которое принимает или возвращает свойство. НАЗВАНИЕ_СВОЙСТВА - имя свойства(как и имя функции) но так как это, не функция, то скобок ставить не нужно. ВОЗВРАЩАЕМЫЙ_ПАРАМЕТР - параметр, который возвращает ту сущность, которая есть в классе. ПРИНИМАЕМЫЙ_ПАРАМЕТР - задаёт полю класса "некоторое значение". Это "некоторое значение" является оператор value. Что касается get и set, этих братьев-акробатов. get - значит получить значение поля класса, set - наоборот, задаёт значение полю. Эти операторы являются блочными конструкциями и наличие фигурных скобок обязательное. Также в блоке get обязательно должен быть return а в set - value. Давайте возьмём класс Car из предыдущего урока, и добавим ему свойство:

public class Car { private string _auto = "Автомобиль"; public int Speed = 200; public Car() { } public int CurrentSpeed { get { return Speed; } set { Speed = value; } } }

Я убрал процедуру SetSpeed, теперь скорость в нас будет свойством. Давайте проверим в нашей программе работоспособность свойств:

class Program { static void Main() { Car MyCar = new Car(); Console.WriteLine( "Изначальная скорость: {0}", MyCar.CurrentSpeed ); MyCar.CurrentSpeed = 150; Console.WriteLine( "Новая скорость: {0}", MyCar.CurrentSpeed ); Console.ReadKey(); } }

public int CurrentSpeed { get; set; }

Компилятор поймёт это как абсолютно новое свойство, по этому поле Speed нам не нужно, а наш класс будет иметь следующий вид:

public class Car { private string _auto = "Автомобиль"; public Car() { } public int CurrentSpeed { get; set; } }

public class Car { private string _auto = "Автомобиль"; public Car() { CurrentSpeed = 200; } public int CurrentSpeed { get; set; } }

public class Car { public Car() { Name = "Автомобиль"; } public string Name { get; set; } public int CurrentSpeed { get; set; } } public class Lanborghini : Car { public int DoorCount = 4; public string EngineType = "Automatic"; public Lanborghini() { Name = "Ламборгини"; } } public class Porshe : Car { public int DoorCount = 2; public string EngineType = "Automatic"; public int WheelsSize = 5; public Porshe() { Name = "Порше"; } } public class Gallardo : Lanborghini { public int EnginePower = 1500; public int TireSize = 4; public Gallardo() { Name = "Галлардо"; } }

Проверим работоспособность следующим кодом:

class Program { static void Main() { Car MyCar = new Car(); Lanborghini MyLambo = new Lanborghini(); Porshe MyPorshe = new Porshe(); Gallardo MyGallardo = new Gallardo(); Console.WriteLine( "{0}", MyCar.Name ); Console.WriteLine( "{0}", MyLambo.Name ); Console.WriteLine( "{0}", MyPorshe.Name ); Console.WriteLine( "{0}", MyGallardo.Name ); Console.ReadKey(); } }

Last updated