Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 121
- Предыдущая
- 121/642
- Следующая
SocialSecurityNumber = ssn;}Если только вы не готовы переделать данное свойство в поддерживающее чтение и запись (что вскоре будет сделано), тогда единственным вариантом со свойствами, допускающими только чтение, будет применение лежащей в основе переменной-члена
empSSNpublic Employee(string name, int age, int id, float pay, string ssn){ ... // Проверить надлежащим образом входной параметр ssn // и затем установить значение. empSSN = ssn;}Свойства, допускающие только запись
Если вы хотите сконфигурировать свойство как допускающее только запись, тогда опустите блок
getpublic int Id{ set { _empId = value; }}Смешивание закрытых и открытых методов get/set в свойствах
При определении свойств уровень доступа для методов
getsetgetsetpublic string SocialSecurityNumber{ get => _empSSN; private set => _empSSN = value;}Обратите внимание, что это превращает свойство, допускающее только чтение, в допускающее чтение и запись. Отличие в том, что запись скрыта от чего-либо за рамками определяющего класса.
Еще раз о ключевом слове static: определение статических свойств
Ранее в главе рассказывалось о роли ключевого слова
staticStaticDataAndMembersSavingsAccountstatic// Простой класс депозитного счета.class SavingsAccount{ // Данные уровня экземпляра. public double currBalance; // Статический элемент данных. private static double _currInterestRate = 0.04; // Статическое свойство. public static double InterestRate { get { return _currInterestRate; } set { _currInterestRate = value; } } ...}Если вы хотите использовать свойство
InterestRate// Вывести текущую процентную ставку через свойство.Console.WriteLine("Interest Rate is: {0}", SavingsAccount.InterestRate);Сопоставление с образцом и шаблоны свойств (нововведение в версии 8.0)
Шаблон свойств позволяет сопоставлять со свойствами объекта. В качестве примера добавьте к проекту новый файл (
EmployeePayTypeEnum.csnamespace EmployeeApp{ public enum EmployeePayTypeEnum { Hourly, // почасовая оплата Salaried, // оклад Commission // комиссионное вознаграждение }}Обновите класс
Employee<b>private EmployeePayTypeEnum _payType;</b><b>public EmployeePayTypeEnum PayType</b><b>{</b><b> get => _payType;</b><b> set => _payType = value;</b><b>}</b>public Employee(string name, int id, float pay, string empSsn) : this(name,0,id,pay, empSsn, <b>EmployeePayTypeEnum.Salaried</b>){}public Employee(string name, int age, int id, float pay, string empSsn, <b>EmployeePayTypeEnum payType</b>){ Name = name; Id = id; Age = age; Pay = pay; SocialSecurityNumber = empSsn;<b> PayType = payType;</b>}- Предыдущая
- 121/642
- Следующая
