Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

class Employee

{

// Поля данных.

private string _empName;

private int _empId;

private float _currPay;

private int _empAge;

// Конструкторы.

public Employee { }

public Employee(string name, int id, float pay)

:this(name, 0, id, pay){}

public Employee(string name, int age, int id, float pay)

{

Name = name;

Age = age;

ID = id;

Pay = pay;

}

//
Методы.

public void GiveBonus(float amount) => Pay += amount;

public void DisplayStats

{

Console.WriteLine("Name: {0}", Name); // имя сотрудника

Console.WriteLine("ID: {0}", Id);

// идентификационный номер сотрудника

Console.WriteLine("Age: {0}", Age); // возраст сотрудника

Console.WriteLine("Pay: {0}", Pay); // текущая выплата

}

// Свойства остаются прежними...

...

}

Свойства, допускающие только чтение

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

set
. Например, пусть имеется новое свойство по имени
SocialSecurityNumber
, которое инкапсулирует закрытую строковую переменную
empSSN
. Вот как превратить его в свойство, доступное только для чтения:

public string SocialSecurityNumber

{

get { return _empSSN; }

}

Свойства, которые имеют только метод

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

public string SocialSecurityNumber => _empSSN;

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

SocialSecurityNumber
допускает только чтение, устанавливать значение так, как показано ниже, нельзя:

public Employee(string name, int age, int id, float pay, string ssn)

{

Name = name;

Age = age;

ID = id;

Pay = pay;

// Если свойство предназначено только для чтения, это больше невозможно!

SocialSecurityNumber = ssn;

}

Если

только вы не готовы переделать данное свойство в поддерживающее чтение и запись (что вскоре будет сделано), тогда единственным вариантом со свойствами, допускающими только чтение, будет применение лежащей в основе переменной-члена
empSSN
внутри логики конструктора:

public Employee(string name, int age, int id, float pay, string ssn)

{

...

// Проверить надлежащим образом входной параметр ssn

// и затем установить значение.

empSSN = ssn;

}

Свойства, допускающие только запись

Если вы хотите сконфигурировать свойство как допускающее только запись, тогда опустите блок

get
, например:

public int Id

{

set { _empId = value; }

}

Смешивание закрытых и открытых методов get/set в свойствах

При определении свойств уровень доступа для методов

get
и
set
может быть разным. Возвращаясь к номеру карточки социального страхования, если цель заключается в том, чтобы предотвратить модификацию номера извне класса, тогда объявите метод
get
как открытый, но метод
set
— как закрытый:

public string SocialSecurityNumber

{

get => _empSSN;

private set => _empSSN = value;

}

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

Еще раз о ключевом слове static: определение статических свойств

Ранее в главе рассказывалось о роли ключевого слова

static
. Теперь, когда вы научились использовать синтаксис свойств С#, мы можем формализовать статические свойства. В проекте
StaticDataAndMembers
класс
SavingsAccount
имел два открытых статических метода для получения и установки процентной ставки. Однако более стандартный подход предусматривает помещение такого элемента данных в статическое свойство. Ниже приведен пример (обратите внимание на применение ключевого слова
static
):

// Простой класс депозитного счета.

class SavingsAccount

{

// Данные уровня экземпляра.

public double currBalance;

// Статический элемент данных.

private static double _currInterestRate = 0.04;

// Статическое свойство.

public static double InterestRate

{

get { return _currInterestRate; }

Поделиться:
Популярные книги

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

О, мой бомж

Джема
1. Несвятая троица
Любовные романы:
современные любовные романы
5.00
рейтинг книги
О, мой бомж

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Вы не прошли собеседование

Олешкевич Надежда
1. Укротить миллионера
Любовные романы:
короткие любовные романы
5.00
рейтинг книги
Вы не прошли собеседование

Метаморфозы Катрин

Ром Полина
Фантастика:
фэнтези
8.26
рейтинг книги
Метаморфозы Катрин

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Попаданка для Дракона, или Жена любой ценой

Герр Ольга
Любовные романы:
любовно-фантастические романы
7.17
рейтинг книги
Попаданка для Дракона, или Жена любой ценой

Истинная поневоле, или Сирота в Академии Драконов

Найт Алекс
3. Академия Драконов, или Девушки с секретом
Любовные романы:
любовно-фантастические романы
6.37
рейтинг книги
Истинная поневоле, или Сирота в Академии Драконов

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Возвышение Меркурия. Книга 17

Кронос Александр
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

Волков. Гимназия №6

Пылаев Валерий
1. Волков
Фантастика:
попаданцы
альтернативная история
аниме
7.00
рейтинг книги
Волков. Гимназия №6

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки