Вопрос

Я только что обновил проект VS 2005 до VS 2008 и изучал изменения.Я заметил, что один из файлов .Designer.cs существенно изменился.Большинство изменений были просто заменой Система с глобальный::Система.Например,

protected override System.Data.DataTable CreateInstance()

стал

protected override global::System.Data.DataTable CreateInstance()

Что тут происходит?

Это было полезно?

Решение

::оператор называется квалификатором псевдонима пространства имен.

 global::System.Data.DataTable 

такой же как:

 System.Data.DataTable

Visual Studio 2008 добавила его в код, созданный дизайнером, чтобы избежать неоднозначных проблем со ссылками, которые иногда возникали, когда люди создавали классы с именем System... Например:

class TestApp
{
    // Define a new class called 'System' to cause problems.
    public class System { }

    // Define a constant called 'Console' to cause more problems.
    const int Console = 7;
    const int number = 66;

    static void Main()
    {
        // Error  Accesses TestApp.Console
        //Console.WriteLine(number);
    }
}

Однако:

global::System.Console.Writeline("This works");

Для дальнейшего чтения:

http://msdn.microsoft.com/en-us/library/c3ay4x3d(VS.80).aspx

Другие советы

Чтобы люди не делали №1 в этом списке. :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top