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?

Foi útil?

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 . :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top