Статическая глобальная переменная в C # имеет область видимости файла?

0

в C++ вы можете определить область глобальной переменной со статическим ключевым словом, находящимся в "области файлов". Это то же самое в С#?

благодарю!

  • 1
    В C ++ область действия относится к объявлениям, а не к объектам, объявленным или определенным ими. Независимо от контекста, int i; имеет ту же область видимости, что и static int i; , это не зависит от ключевого слова static .
Теги:

5 ответов

0
Лучший ответ

Статическое ключевое слово: в C++ статические могут использоваться как для объявления объектов уровня класса, так и для объявления типов, специфичных для модуля. В С# статичность используется только для объявления объектов уровня класса.

Полезная ссылка для вас, С# для разработчиков C++

1

C# не имеет понятия области файлов. Нечто подобное может быть достигнуто internal что позволяет ограничить видимость декларирующей сборки.

0

Я не знаю, что такое область файлов, но вы можете определить свою переменную на class level и вы можете получить доступ к ней внутри своего класса всякий раз, когда захотите.

public class MyClass 
{
   public static object SomeVariable;
   ...
}

Это самая большая область для переменной в C#.

0

Поля статических членов могут быть только общедоступными, внутренними (видимыми только в текущих сборках и объявленных сборках друзей) или частными.

Дополнением вы можете рассматривать вложенные классы (даже публичное статическое поле частного вложенного класса недоступно вне внешнего класса).

Другой способ защитить "горячих" общих членов (не являющихся статическими, но которые могут быть частью статического экземпляра) - это определить интерфейс (который может быть внутренним), предоставляющий доступ к этому члену. Затем реализовать интерфейс явно (указав имя интерфейса в виде точечного префикса имени члена) в классе вашего статического экземпляра. Чтобы получить доступ к этому члену, авторизованный код должен сначала передать статический экземпляр интерфейсу.

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

Возможно, вы можете быть более ясными в своих потребностях, и мы сможем найти оптимальное решение.

0

если вы хотите сделать класс Varriables, а затем называть его каждый раз, например: Varriables.myNewVarriable, то все, что вам нужно сделать, это сделать класс Varriables, а затем использовать: public static

    public class Varriables
    {
          public static int myNewVarriable = 14;
    }

то просто вызовите его из другого класса:

    if (Varriables.myNewVarriable == 14)
    {
         Console.Write("True");
    }

    >>>True

Ещё вопросы

Сообщество Overcoder
Наверх
Меню