Перейти к содержимому

Почему нельзя объявить константу без указания значения

  • автор:

Почему нельзя объявить константу без указания значения?

ThunderCat

Ярослав Иванов, вам уже не раз писали, что если у вас есть проблемы с конкретным применением конкретно выражения в конкретном языке программирования — задайте свой вопрос по его целесообразности.
Если вы продолжите флеймить на эту тему, ваш доступ к ресурсу будет ограничен. И не на двое суток.

Решения вопроса 0
Ответы на вопрос 3

uashkki

Frontend Developer
Как ты изменишь ей значение, если изначально не определишь его
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

CriticalError

Дмитрий Воробьев @CriticalError

По тому что будет синтаксическая ошибка.
А если представить с другой стороны, допустим можно. Ты объявляешь константу без значения, какова может быть сфера применения у этой константы? Добавить или изменить не получится, использовать в расчетах и других операциях не имеет не какого смысла, вот по этому и выходит синтактическая ошибка, как знак «тупик» на дороге.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

xEpozZ

Веб-разработчик

Это же рудимент. Go на неиспользуемые переменные ошибку компиляции кидает

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

javascript

  • JavaScript
  • +3 ещё

Как сделать ограничитель поля символов?

  • 1 подписчик
  • 4 минуты назад
  • 6 просмотров

Общие сведения о константах (Visual Basic)

Константой является понятное имя, которое занимает место числа или строки, которая не изменяется. Константы хранят значения, которые, как следует из названия, остаются неизменными на протяжении всего выполнения приложения. Вы можете значительно улучшить удобочитаемость кода и упростить его обслуживание с помощью констант. Используйте их в коде, который содержит значения, которые появляются повторно или которые зависят от определенных чисел, которые трудно запомнить или не имеют очевидного значения.

Создание и использование констант

Visual Basic содержит ряд предопределенных констант, которые в основном используются для печати и отображения. Вы также можете создать собственные константы с Const помощью оператора , используя те же рекомендации, что и для создания имени переменной. Если Option Strict имеет значение On , необходимо явно объявить тип константы.

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

Хотя константы в некоторой степени похожи на переменные, их нельзя изменять или присваивать им новые значения, как это возможно для переменных.

Константы, используемые в коде, могут быть определены объектной моделью для элементов управления или компонентов, с которыми вы работаете, или могут быть определяемыми пользователем (т. е. созданными вами самостоятельно).

Константы времени компиляции и времени выполнения

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

В этом разделе

Определение Термин
Практическое руководство. Объявление константы Объясняется, как использовать Const оператор для объявления константы и задания ее значения. Объявляя константу, вы присваиваете ей понятное имя.
Константы, определенные пользователем Описывает, как создавать собственные константы, включая сведения о области и как избежать циклических ссылок.
Типы данных констант и литералов Предоставляет сведения о том, как компилятор Visual Basic инициализирует константы при Option Explicit отключении.
Практическое руководство. Группирование значений связанных констант Демонстрирует группирование связанных значений констант.

Ссылка

Определение Термин
Константы и перечисления Перечисляет константы, предопределенные Visual Basic.
Оператор Const Описывает инструкцию Const и ее использование.
Оператор Option Strict Описывает инструкцию Option Strict и ее использование.

См. также раздел

  • Общие сведения о перечислениях
  • How to: Initialize an Array Variable in Visual Basic (Практическое руководство. Инициализация переменной массива в Visual Basic)

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

константы в JavaScript

Хм, и правда нельзя.
const A;
A = 3;
console.log(A);
console.log(A+2);
>>>
SyntaxError: missing = in const declaration (Firefox)
SyntaxError: Missing initializer in const declaration (Chrome)
Что пошло не так?
Раздел

Константа это значение, которое не может быть изменено программой в процессе своего выполнения. Оно не может меняться посредством повторного назначения, и не может быть переопределено. В JavaScript константы объявляются с использованием ключевого слова const. Инициализация для константы является обязательной; то есть вы должны указать значение сразу же при её объявлении (что имеет смысл, учитывая, что оно не может быть изменено позже).

Николай ВеселухаВысший разум (350692) 4 года назад

Для JavaScript это касается только присваивания. Внутреннюю структура объекта можно менять, если только его внутренние объявления также не объявлены константными.

Остальные ответы
Это JS. Привыкай.

Константы нельзя переназначать во время выполнения программы. Как только её создал тут же должен её инициализировать. Константы позволяют писать хороший код который будет понятен и для других разработчиков. Например, ты написал код и там есть магические числа 720, 235 для тебя этот код будет понятен так как ты знаешь для чего нужны эти числа, а вот другой программист не поймёт для чего они нужны, но если этим числам дать своё определенное имя например const SCREEN_WIDTH = 720 то уже понятно для чего это число. Когда интерпретатор выполняет код он вместо этих имён подставляет значения констант. Константы логичнее использовать тогда когда знаешь что это значение никогда не изменится или будет изменяться реже.

Инструкции объявления

Оператор объявления объявляет новую локальную переменную, локальную константу или локальную эталонную переменную. Чтобы объявить локальную переменную, укажите его тип и укажите его имя. Можно объявить несколько переменных одного типа в одной инструкции, как показано в следующем примере:

string greeting; int a, b, c; List xs; 

В инструкции объявления можно также инициализировать переменную с его начальным значением:

string greeting = "Hello"; int a = 3, b = 2, c = a + b; List xs = new(); 

В предыдущих примерах явно указывается тип переменной. Можно также разрешить компилятору определить тип переменной из его выражения инициализации. Для этого используйте var ключевое слово вместо имени типа. Дополнительные сведения см. в разделе неявно типизированных локальных переменных .

Чтобы объявить локальную константу, используйте const ключевое слово, как показано в следующем примере:

const string Greeting = "Hello"; const double MinLimit = -10.0, MaxLimit = -MinLimit; 

При объявлении локальной константы необходимо также инициализировать ее.

Сведения о локальных ссылочных переменных см. в разделе «Эталонные переменные «.

Неявно типизированные локальные переменные

При объявлении локальной переменной можно разрешить компилятору определить тип переменной из выражения инициализации. Для этого используйте var ключевое слово вместо имени типа:

var greeting = "Hello"; Console.WriteLine(greeting.GetType()); // output: System.String var a = 32; Console.WriteLine(a.GetType()); // output: System.Int32 var xs = new List(); Console.WriteLine(xs.GetType()); // output: System.Collections.Generic.List`1[System.Double] 

Как показано в предыдущем примере, неявно типизированные локальные переменные строго типизированы.

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

var xs = new List(); 

Вы можете использовать целевое типизированное new выражение в качестве альтернативы:

List xs = new(); List? ys = new(); 

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

var fromPhoenix = from cust in customers where cust.City == "Phoenix" select new < cust.Name, cust.Phone >; foreach (var customer in fromPhoenix) < Console.WriteLine($"Name=, Phone="); > 

Дополнительные сведения о неявно типизированных локальных переменных см. в разделе неявно типизированные локальные переменные.

При сопоставлении шаблонов в шаблоне var используется ключевое слово var .

Ссылочные переменные

При объявлении локальной переменной и добавлении ref ключевое слово перед типом переменной объявляется эталонная переменная или локальная ref :

ref int alias = ref variable; 

Ссылочная переменная — это переменная, которая ссылается на другую переменную, которая называется ссылочной. То есть ссылочная переменная является псевдонимом его ссылки. При назначении значения ссылочной переменной это значение назначается референту. При чтении значения ссылочной переменной возвращается значение ссылки. В следующем примере продемонстрировано такое поведение.

int a = 1; ref int alias = ref a; Console.WriteLine($"(a, alias) is (, )"); // output: (a, alias) is (1, 1) a = 2; Console.WriteLine($"(a, alias) is (, )"); // output: (a, alias) is (2, 2) alias = 3; Console.WriteLine($"(a, alias) is (, )"); // output: (a, alias) is (3, 3) 

ref Используйте оператор = ref назначения для изменения ссылочной переменной, как показано в следующем примере:

void Display(int[] s) => Console.WriteLine(string.Join(" ", s)); int[] xs = [0, 0, 0]; Display(xs); ref int element = ref xs[0]; element = 1; Display(xs); element = ref xs[^1]; element = 3; Display(xs); // Output: // 0 0 0 // 1 0 0 // 1 0 3 

В предыдущем примере element ссылочная переменная инициализируется как псевдоним первого элемента массива. Затем он ref переназначился, чтобы ссылаться на последний элемент массива.

Можно определить локальную ref readonly переменную. Нельзя назначить значение переменной ref readonly . Однако можно ref переназначить такую эталонную переменную, как показано в следующем примере:

int[] xs = [1, 2, 3]; ref readonly int element = ref xs[0]; // element = 100; error CS0131: The left-hand side of an assignment must be a variable, property or indexer Console.WriteLine(element); // output: 1 element = ref xs[^1]; Console.WriteLine(element); // output: 3 

Вы можете назначить ссылку в эталонную переменную, как показано в следующем примере:

using System; public class NumberStore < private readonly int[] numbers = [1, 30, 7, 1557, 381, 63, 1027, 2550, 511, 1023]; public ref int GetReferenceToMax() < ref int max = ref numbers[0]; for (int i = 1; i < numbers.Length; i++) < if (numbers[i] >max) < max = ref numbers[i]; >> return ref max; > public override string ToString() => string.Join(" ", numbers); > public static class ReferenceReturnExample < public static void Run() < var store = new NumberStore(); Console.WriteLine($"Original sequence: "); ref int max = ref store.GetReferenceToMax(); max = 0; Console.WriteLine($"Updated sequence: "); // Output: // Original sequence: 1 30 7 1557 381 63 1027 2550 511 1023 // Updated sequence: 1 30 7 1557 381 63 1027 0 511 1023 > > 

В предыдущем примере GetReferenceToMax метод является методом возвращается по ссылке . Он не возвращает максимальное значение, но возвращаемое ссылкой, которое является псевдонимом элемента массива, который содержит максимальное значение. Метод Run назначает ссылку возвращаемой переменной max . Затем, назначив max его, он обновляет внутреннее хранилище экземпляра store . Можно также определить ref readonly метод. Вызывающие методы ref readonly не могут назначить значение возвращаемой ссылке.

Переменная итерации инструкции foreach может быть эталонной переменной. Дополнительные сведения см. в foreach разделе инструкций инструкции инструкций итерации.

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

Сведения о ref полях см ref . в разделе полей статьи ref типов структур.

область d ref

Контекстная ключевое слово scoped ограничивает время существования значения. Модификатор scoped ограничивает время существования ref-safe-to-escape или safe-to-escape соответственно текущим методом. Фактически добавление модификатора утверждает, scoped что код не будет расширять время существования переменной.

Можно применить scoped к параметру или локальной переменной. Модификатор scoped может применяться к параметрам и локальным параметрам, если тип является типом ref struct . scoped В противном случае модификатор может применяться только к локальным ссылочным переменным. Это включает локальные переменные, объявленные модификатором ref и параметрами, объявленными с in ref помощью модификаторов или out модификаторов.

Модификатор scoped неявно this добавляется в методы, объявленные в struct параметрах out , параметрах и ref параметрах, когда тип является ref struct .

Спецификация языка C#

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:

  • Инструкции объявления
  • Ссылочные переменные и возвращается

Дополнительные сведения об scoped модификаторе см. в заметке по улучшению структуры низкого уровня.

См. также

  • справочник по C#
  • Инициализаторы объектов и коллекций
  • Ключевое слово ref
  • Сокращение выделения памяти с помощью новых функций C#
  • Параметры var (правила стиля IDE0007 и IDE0008)

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *