sgramesh75 Ответов: 3

Как мы можем изменить значение константы во время выполнения?


Пожалуйста, помогите мне const string value во время выполнения

здесь я хочу изменить "cWeatherID" в цикле

Что я уже пробовал:

общественности частичного класс form1 : форма
{


константные строки cWeatherID


private void button1_Click_1(object sender, EventArgs e)
      {

foreach (строка s в listBox2.Items)
{


cWeatherID =s

константные строки lURL = локон + "?" + cWeatherID + "&ампер;" + cUnitID + "&амп;формат=" + cFormat;
?
}
}

F-ES Sitecore

Просто чтобы добавить к тому, что сказали другие, константы не являются переменными, даже если они выглядят как они. Если я напишу этот код;

const x = 5;
int y = 2 * x;

тогда то, что на самом деле компилируется, это

int y = 2 * 5;

Компилятор буквально заменяет везде, где вы используете "x", на "5". Вот почему вы не можете изменить константу во время выполнения; они не существуют во время выполнения, только во время компиляции.

3 Ответов

Рейтинг:
2

phil.o

Ты не можешь. Константа-это... константа.
Если вы хотите, чтобы переменная была изменчивой, не определяйте ее как постоянную.
ключевое слово const - Справочник по C# | Microsoft Docs[^]


Рейтинг:
2

OriginalGriff

То const ключевое слово существует, чтобы явно сказать: "это всегда будет иметь значение, которое я даю ему сейчас: это не может быть изменено никем, никогда", и система будет применять это. Но, глядя на ваш код, зачем он вам вообще нужен? Измените на это:

foreach (string cWeatherID in listBox2.Items)
    {
    string lURL = cURL + "?" + cWeatherID + "&" + cUnitID + "&format=" + cFormat;
    ...
    }
Или лучше (если вы используете последнюю версию VS)
foreach (string cWeatherID in listBox2.Items)
    {
    string lURL = $"{cURL}?{cWeatherID}&{cUnitID}&format={cFormat}";
    ...
    }
И это должно начать работать.


Рейтинг:
0

Patrice T

Цитата:
Как мы можем изменить значение константы во время выполнения?

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