Зачем использовать ключевое слово global в C #?

Я хотел бы понять, почему вы можете захотеть использовать префикс global :: . В следующем коде ReSharper идентифицирует его как избыточный и может быть удален:

alt text

55
задан Community 8 February 2017 в 04:30
поделиться

2 ответа

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

Если вы создадите тип с именем System.Diagnostics.DebuggerNonUserCodeAttribute в своем пространстве имен, вы заметите, что ReSharper больше не говорит, что global:: не нужен. Генератор кода просто хочет избежать любых коллизий с именами ваших собственных типов.

51
ответ дан 7 November 2019 в 07:14
поделиться

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

Например

class Test {
  class System {}
  public void Example() {
    System.Console.WriteLine("here"); // Error since System binds to Test.System
    global::System.Console.WriteLine("here"); // Works
}

На соответствующей странице MSDN есть еще несколько примеров (включая приведенный выше)

65
ответ дан 7 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

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