¿Cuál es la diferencia entre & # 8220; global :: System & # 8221; y & # 8220; Sistema & # 8221; ¿en la red?
-
03-07-2019 - |
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í?
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 . :)