¿Cuál es la diferencia entre & # 8220; global :: System & # 8221; y & # 8220; Sistema & # 8221; ¿en la red?

StackOverflow https://stackoverflow.com/questions/162537

Pregunta

Acabo de actualizar un proyecto VS 2005 a VS 2008 y estaba examinando los cambios. Noté que uno de los archivos .Designer.cs había cambiado significativamente. La mayoría de los cambios fueron simplemente reemplazos de System con global :: System . Por ejemplo,

protected override System.Data.DataTable CreateInstance()

se convirtió

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

¿Qué está pasando aquí?

¿Fue útil?

Solución

El operador :: se llama un calificador de alias de espacio de nombres.

 global::System.Data.DataTable 

es lo mismo que:

 System.Data.DataTable

Visual Studio 2008 lo agregó al código generado por el diseñador para evitar problemas de referencia ambiguos que ocasionalmente ocurrían cuando las personas creaban clases llamadas Sistema ... Por ejemplo:

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);
    }
}

Sin embargo:

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

Para leer más:

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

Otros consejos

Para evitar que la gente haga # 1 en esta lista . :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top