Как да използвам const, readonly и static в C #

Ключовите думи const, readonly и static се използват често при програмиране на C #. Въпреки че тези ключови думи имат важни разлики, те също имат сходства, които понякога затрудняват да се знае кога да се използва кой. Тази статия разглежда ключовите думи const, статични и само за четене в C #, как се сравняват и как трябва да ги използваме в нашите C # приложения.

За да работите с примерите за кодове, предоставени в тази статия, трябва да имате Visual Studio 2019 инсталиран във вашата система. Ако все още нямате копие, можете да изтеглите Visual Studio 2019 тук. 

Създайте проект за конзолно приложение в Visual Studio 2019

Първо, нека създадем проект за приложение на конзола .NET Core в Visual Studio. Ако приемем, че Visual Studio 2019 е инсталиран във вашата система, следвайте стъпките, описани по-долу, за да създадете нов проект за приложение на конзола .NET Core в Visual Studio.

  1. Стартирайте Visual Studio IDE.
  2. Кликнете върху „Създаване на нов проект“.
  3. В прозореца „Създаване на нов проект“ изберете „Console App (.NET Core)“ от показания списък с шаблони.
  4. Щракнете върху Напред.
  5. В показания след това прозорец „Конфигуриране на вашия нов проект“ посочете името и местоположението на новия проект.
  6. Щракнете върху Създаване.

Това ще създаде нов проект за приложение на конзола .NET Core в Visual Studio 2019. Ще използваме този проект, за да илюстрираме използването на ключови думи const, readonly и static в C # в следващите раздели на тази статия.

Използвайте ключовата дума const в C #

Ключовата дума const (чете се: константа) в C # се използва за дефиниране на константа на променлива, т.е. променлива, чиято стойност няма да се промени по време на живота на програмата. Следователно е наложително да присвоите стойност на постоянна променлива по време на нейното деклариране.

Тази стойност на константна променлива е известна също като стойност „време на компилация“. Променливите, декларирани с помощта на ключовата дума const, са известни още като константи по време на компилация. Трябва да се отбележи, че константната променлива е неизменна, т.е. стойността, присвоена на константна променлива, не може да бъде променена по-късно.

Следният кодов фрагмент илюстрира как можете да дефинирате константа за време на компилация, използвайки ключовата дума const в C #.

const string connectionString = "Посочете тук вашия низ за връзка с база данни.";

Имайте предвид, че трябва да присвоите стойност на постоянна променлива в момента, в който я дефинирате. Имайте предвид също, че не можете да използвате ключовата дума const, за да създадете постоянен обект. Ключовата дума const може да се приложи само към примитивните типове данни (като ints, floats, chars и booleans) и низове. Нека разберем използването на const с пример.

Помислете за следния клас с име Автор. Ще дадем на класа Author само няколко свойства, за да го улесним.

публична класа Автор

    {

        public int Id {get; комплект; }

        публичен низ FirstName {get; комплект; }

        публичен низ LastName {get; комплект; }

        публичен низ Адрес {get; комплект; }

    }

Сега, ако се опитате да създадете постоянен обект от класа Author с помощта на ключовата дума const, ще забележите грешката при компилацията, показана на фигура 1 по-долу.

Тази грешка показва, че дясната страна на оператора за присвояване трябва да има постоянна стойност, за да задоволи израза. Тъй като изразът new Author()не е константа, присвояването не е валидно и следователно грешката.

Използвайте ключовата дума readonly в C #

Ключовата дума readonly може да се използва за дефиниране на променлива или обект само за четене. Това означава, че на променливата или обекта може да бъде присвоена стойност в обхвата на класа или само в конструктор. Не можете да промените стойността или да преназначите стойност на променлива или обект само за четене по друг метод, освен конструктора.

Нека разберем това с пример. Помислете за следния клас с име DbManager.

публичен клас DbManager

    {

        публичен низ за четене низ connectionString =

        "Посочете тук низ за връзка с вашата база данни.";

        публичен DbManager ()

        {

            connectionString = "Можете да преназначите стойност тук.";

        }

        public void ReAssign ()

        {

            connectionString = "Това не е разрешено";

        }

    }

Горният код няма да се компилира и ще ви бъде представена грешката, показана на фигура 2.

Използвайте статичната ключова дума в C #

Статичната ключова дума в C # може да се използва за променлива, метод или обект. Обърнете внимание, че статичният член на клас принадлежи към типа на обекта, а не към екземпляра на типа. С други думи, статичните членове са достъпни с името на класа, а не с името на екземпляр. 

Помислете за следния клас, наречен Utility, който съдържа статичен метод.

публична класа Utility

    {

        публична статична празнота SomeMethod ()

        {

            // Напишете кода си тук

        }

    }

Не можете да извикате метода, SomeMethod()като използвате екземпляр на класа Utility. По-скоро трябва да извикате този метод, като използвате следния синтаксис.

Utility.SomeMethod ();

Същото правило се прилага за статична променлива или статичен обект. Можете да се позовете на статичен член на клас само като използвате синтаксиса, показан по-долу.

ClassName . Член;

Или

ClassName . Член();

Конструктор на клас може да бъде статичен. Статичен конструктор на клас се използва за инициализиране на статичните членове на класа. Статичният конструктор на клас обаче не може да приема параметри.

Правило за const, само за четене и статично

Ето правилото на палеца, което можете да следвате, когато работите с ключовите думи const, readonly и static. Използвайте ключовата дума const, когато стойността, съдържаща се в променлива, никога няма да се промени по време на живота на приложението. Използвайте ключовата дума readonly, когато не сте сигурни дали стойността на променлива на обект трябва да се промени, но искате да предотвратите промяната на стойността на други класове. Използвайте статичната ключова дума, когато искате членът на клас да принадлежи към типа, а не към екземпляра на типа.

Как да направите повече в C #:

  • Как да използвам анотации на данни в C #
  • Как да работите с GUID в C # 8
  • Кога да се използва абстрактен клас срещу интерфейс в C #
  • Как да работя с AutoMapper в C #
  • Как да използвам ламбда изрази в C #
  • Как да работя с Action, Func и Predicate делегати в C #
  • Как да работя с делегати в C #
  • Как да внедрите прост регистратор в C #
  • Как да работя с атрибути в C #
  • Как да работя с log4net в C #
  • Как да приложим шаблона за проектиране на хранилището в C #
  • Как да работя с отражение в C #
  • Как да работя с файлова система за наблюдение в C #
  • Как да извършите мързелива инициализация в C #
  • Как да работите с MSMQ в C #
  • Как да работя с методи за разширение в C #
  • Как да използваме ламбда изрази в C #
  • Кога да се използва летливата ключова дума в C #
  • Как да използвам ключовата дума yield в C #
  • Как да приложим полиморфизъм в C #
  • Как да изградите свой собствен планировчик на задачи в C #
  • Как да работя с RabbitMQ в C #
  • Как да работите с кортеж в C #
  • Проучване на виртуални и абстрактни методи в C #
  • Как да използваме Dapper ORM в C #
  • Как да използвам шаблона за дизайн на мухата в C #