Я предполагаю, что вы имеете в виду что-то вроде
void Main()
{
const int c = 1;
Console.WriteLine (c == 1);
}
Что является законным, поскольку ограничивает объем c
этой функции. Весь компилятор с константой local заменяет все экземпляры этой ссылки постоянным значением. Так что если вы декомпилировать код, который вы увидите:
void Main()
{
Console.WriteLine (1 == 1);
}
Там нет такого понятия, как статической местных жителей в C#. Статические локали в C++ - это локальные переменные, которые сохраняют свои значения во всех вызовах этого метода. В C# вместо этого вы используете статический член . Константа класснеявноstatic
, потому что нет причин для их создания экземпляр объектов недвижимости. Но это не означает, что const
varaibles являются «статическими» в том же смысле.
Там очень длительная дискуссия о том, почему C# не поддерживает статические переменные внутри функции [здесь] (https://blogs.msdn.microsoft.com/csharpfaq/2004/05/11/why-doesnt-c -Support-статические-метод-переменные /). –
Переменные 'static' в функциях не допускаются. Переменные 'const'. Переменные 'const' не являются« неявно статическими », кроме как в вашем воображении, потому что переменные' static' в функциях недопустимы. Вы смотрите на это через C-цветные очки. –