C # - объектно-ориентированный язык программирования, C - процедурный язык программирования.
Это в основном означает, что в C логично иметь статическую переменную в функциональном блоке. В C # класс является базовым блоком, поэтому логично иметь в классе только статический член.
Так вот (в двух словах), почему в функциях C # нет статических переменных.
Вы можете использовать статический член в классе и использовать его в функции, чтобы получить тот же эффект.
Кстати, C ++ находится в середине, он ввел ООП в С, но это еще не чистый ООП. Поскольку функции все еще могут быть автономными, у вас все еще есть статические переменные в функциях.