Зачем использовать глобальное ключевое слово в C #? - PullRequest
55 голосов
/ 24 августа 2010

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

alt text

Ответы [ 3 ]

65 голосов
/ 24 августа 2010

Ключевое слово 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 есть еще несколько примеров (включая приведенный выше)

51 голосов
/ 24 августа 2010

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

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

2 голосов
/ 10 марта 2014

"Глобальное контекстное ключевое слово, когда оно предшествует оператору ::, относится к глобальному пространству имен, которое является пространством имен по умолчанию для любой программы на C # и в противном случае является безымянным."

Источник: https://msdn.microsoft.com/en-us/library/cc713620.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...