В чем разница между «global::System» и «System» в .NET?
-
03-07-2019 - |
Вопрос
Я только что обновил проект 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 в этом списке. :)
Не связан с StackOverflow