Qual é a diferença entre “global :: Sistema” e “System” em .NET?
-
03-07-2019 - |
Pergunta
Eu acabei de atualizar um projeto VS 2005 para VS 2008 e estava examinando as alterações. Notei um dos arquivos .Designer.cs tinha mudado significativamente. A maioria das mudanças foram simplesmente substituições de Sistema com Global :: Sistema . Por exemplo,
protected override System.Data.DataTable CreateInstance()
tornou-se
protected override global::System.Data.DataTable CreateInstance()
O que está acontecendo aqui?
Solução
O operador :: é chamado de Namespace Alias ??Qualifier.
global::System.Data.DataTable
é o mesmo que:
System.Data.DataTable
Visual Studio 2008 adicionado ao código do designer gerado para evitar problemas de referência ambígua que, ocasionalmente, aconteceu quando as pessoas criaram classes chamadas do sistema ... Por exemplo:
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);
}
}
No entanto:
global::System.Console.Writeline("This works");
Para ler mais:
http://msdn.microsoft.com/ en-us / library / c3ay4x3d (VS.80) .aspx
Outras dicas
Para evitar que as pessoas de fazerem # 1 nesta lista . :)