Как объявить локальную константу в C#?

Похоже, что «наблюдать» должно быть «телом», а не «ответом» в определении вашего интерфейса.

31
задан Mechanical snail 18 November 2012 в 05:14
поделиться

5 ответов

в C #, вы не можете создать постоянную, который извлекается из способа.

Редактировать: Dead Link http://msdn.microsoft.com/en-us/library/e6w8fe1b (vs.71) .aspx

Этот документ должен помочь: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/const

Постоянное выражение - это выражение, которое может быть полностью оценено в время компиляции.

21
ответ дан 27 November 2019 в 22:26
поделиться

Объявите вашу локальную переменную как переменную итерации. Переменные итерации доступны только для чтения (вы не просили красивого решения).

public void f() 
{
  foreach (int n in new int[] { getNum() }) // n declared constant
  {
    n = 3; // won't compile: "error CS1656: Cannot assign to 'n' because it is a 'foreach iteration variable'"
  }
}
13
ответ дан ZunTzu 27 November 2019 в 22:26
поделиться

В примере вы дали, вам необходимо объявить переменную как Static , поскольку вы инициализируете его с помощью вызова метода. Если вы инициализировали с постоянным значением, как 42, вы можете использовать const . Для занятий, структуров и массивов, readonly должны работать.

1
ответ дан 27 November 2019 в 22:26
поделиться

Я не уверен, почему только для чтения и const не сработали для Вас, так как это те ключевые слова, которые Вам нужны. Вы используете const, если у вас есть литерал (за исключением литералов массива) и readonly, в противном случае:

public void f()
{
    const int answer = 42;
}

private readonly int[] array = new int[] { 1, 2, 3, 4 };
private readonly DateTime date = DateTime.Now;
public void g()
{
    Console.WriteLine(date.ToString());   
}

readonly работает только на уровне класса (т.е. вы можете применять его только к полям). Также как следствие const, требующего буквального значения, оно по своей природе является статическим, в то время как поле readonly может быть как статическим, так и экземпляром.

7
ответ дан 27 November 2019 в 22:26
поделиться

Ключевое слово const используется для изменения Декларация поля или местных Переменная.

из MSDN .

Поскольку C # не может обеспечить принуждение «Const Forrenss» (как C ++), в любом случае, я не думаю, что это очень полезно. Поскольку функции очень натуральные, нелепые, легко не потерять надзор.

0
ответ дан 27 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: