Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю Страница 127
- Категория: Компьютеры и Интернет / Базы данных
- Автор: Троелсен Эндрю
- Страниц: 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 - Троелсен Эндрю читать онлайн бесплатно
Предположим, что вы строите обслуживающий класс по имени MyMathClass, в котором нужно определить значение числа π (для простоты будем считать его равным 3.14). Начните с создания нового проекта консольного приложения по имени ConstData и добавьте к нему файл класса MyMathClass.cs. Учитывая, что давать возможность другим разработчикам изменять это значение в коде нежелательно, число π можно смоделировать с помощью следующей константы:
//MyMathClass.cs
using System;
namespace ConstData
{
class MyMathClass
{
public const double PI = 3.14;
}
}
Приведите код в файле Program.cs к следующему виду:
using System;
using ConstData;
Console.WriteLine("***** Fun with Const *****\n");
Console.WriteLine("The value of PI is: {0}", MyMathClass.PI);
// Ошибка! Константу изменять нельзя!
// MyMathClass.PI = 3.1444;
Console.ReadLine();
Обратите внимание, что ссылка на константные данные, определенные в классе MyMathClass, производится с применением префикса в виде имени класса (т.е. MyMathClass.PI). Причина в том, что константные поля класса являются неявно статическими. Однако допустимо определять локальные константные данные и обращаться к ним внутри области действия метода или свойства, например:
static void LocalConstStringVariable()
{
// Доступ к локальным константным данным можно получать напрямую.
const string fixedStr = "Fixed string Data";
Console.WriteLine(fixedStr);
// Ошибка!
// fixedStr = "This will not work!";
}
Независимо от того, где вы определяете константную часть данных, всегда помните о том, что начальное значение, присваиваемое константе, должно быть указано в момент ее определения. Присваивание значения РI внутри конструктора класса приводит к ошибке на этапе компиляции:
class MyMathClass
{
// Попытка установить PI в конструкторе?
public const double PI;
public MyMathClass()
{
// Невозможно - присваивание должно осуществляться в момент объявления.
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})PI = 3.14;
}
}
Такое ограничение связано с тем фактом, что значение константных данных должно быть известно на этапе компиляции. Как известно, конструкторы (или любые другие методы) вызываются во время выполнения.
Понятие полей данных, допускающих только чтение
С константными данными тесно связано понятие полей данных, допускающих только чтение (которое не следует путать со свойствами, доступными только для чтения). Подобно константе поле только для чтения нельзя изменять после первоначального присваивания, иначе вы получите ошибку на этапе компиляции. Тем не менее, в отличие от константы значение, присваиваемое такому полю, может быть определено во время выполнения и потому может на законном основании присваиваться внутри конструктора, но больше нигде.
Поле только для чтения полезно в ситуации, когда значение не известно вплоть до стадии выполнения (возможно из-за того, что для его получения необходимо прочитать внешний файл), но нужно гарантировать, что впоследствии оно не будет изменяться. В целях иллюстрации рассмотрим следующую модификацию класса MyMathClass:
class MyMathClass
{
// Поля только для чтения могут присваиваться
// в конструкторах, но больше нигде.
public readonly double PI;
public MyMathClass ()
{
PI = 3.14;
}
}
Любая попытка выполнить присваивание полю, помеченному как readonly, за пределами конструктора приведет к ошибке на этапе компиляции:
class MyMathClass
{
public readonly double PI;
public MyMathClass ()
{
PI = 3.14;
}
// Ошибка!
public void ChangePI()
{ PI = 3.14444;}
}
Понятие статических полей, допускающих только чтение
В отличие от константных полей поля, допускающие только чтение, не являются неявно статическими. Таким образом, если необходимо предоставить доступ к PI на уровне класса, то придется явно использовать ключевое слово static. Если значение статического поля только для чтения известно на этапе компиляции, тогда начальное присваивание выглядит очень похожим на такое присваивание в случае константы (однако в этой ситуации проще применить ключевое слово const, потому что поле данных присваивается в момент его объявления):
class MyMathClass
{
Жалоба
Напишите нам, и мы в срочном порядке примем меры.