С#: статическая переменная в статическом методе
У вас есть статическая переменная в статическом методе? Будет ли значение этой переменной сохранено во всех вызовах метода?
например.
public static void MyMethod()
{
static int x = 0;
x++;
}
Ответы
Ответ 1
Нет.
У вас не может быть локальных статических переменных.
От MSDN:
С# не поддерживает статические локальные переменные (переменные, объявленные в области метода).
И здесь:
Статический модификатор может использоваться с классами, полями, методами, свойствами, операторами, событиями и конструкторами, но не может использоваться с индексаторами, деструкторами или типами, отличными от классов.
Как вы можете видеть, локальные переменные не.
Вы можете, но используйте статическое поле:
public class MyClass
{
private static int MyVariable = 10;
public static void MyMethod()
{
MyVariable++;
}
}
Ответ 2
Нет, но вы могли бы:
private static int x = 0;
public static void MyMethod()
{
x++;
}
Ответ 3
С# - объектно-ориентированный язык программирования, C - процедурный язык программирования.
Это в основном означает, что в C логично иметь статическую переменную в функциональном блоке. В С# класс является базовым блоком, поэтому логично иметь только статический член в классе.
Итак, (в двух словах), почему в функциях С# нет статических переменных.
Вы можете использовать статический член в классе и использовать его в функции для получения того же эффекта.
BTW, С++ находится посередине, он вводит OOP в C, но он еще не является чистым ООП. Поскольку функции все еще могут быть автономными, у вас все еще есть статические переменные в функциях.