Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю Страница 121
- Категория: Компьютеры и Интернет / Базы данных
- Автор: Троелсен Эндрю
- Страниц: 642
- Добавлено: 2023-08-26 14:00:22
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю краткое содержание
Прочтите описание перед тем, как прочитать онлайн книгу «Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю» бесплатно полную версию:В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.
Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.
Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю читать онлайн бесплатно
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;
// Статическое свойство.
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})public static double InterestRate
{
get { return _currInterestRate; }
set { _currInterestRate = value; }
}
...
}
Если вы хотите использовать свойство InterestRate вместо предыдущих статических методов, тогда можете модифицировать свой код следующим образом:
// Вывести текущую процентную ставку через свойство.
Console.WriteLine("Interest Rate is: {0}", SavingsAccount.InterestRate);
Сопоставление с образцом и шаблоны свойств (нововведение в версии 8.0)
Шаблон свойств позволяет сопоставлять со свойствами объекта. В качестве примера добавьте к проекту новый файл (EmployeePayTypeEnum.cs) и определите в нем перечисление для типов оплаты сотрудников:
namespace 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>
}
Жалоба
Напишите нам, и мы в срочном порядке примем меры.