Quelle est la différence entre & # 8220; global :: System & # 8221; et & # 8220; Système & # 8221; dans .NET?
-
03-07-2019 - |
Question
Je viens de mettre à niveau un projet VS 2005 vers VS 2008 et examinais les modifications. J'ai remarqué que l'un des fichiers .Designer.cs avait considérablement changé. La majorité des modifications concernaient simplement le remplacement de Système par global :: System . Par exemple,
protected override System.Data.DataTable CreateInstance()
est devenu
protected override global::System.Data.DataTable CreateInstance()
Que se passe-t-il ici?
La solution
L'opérateur :: est appelé qualificateur d'alias d'espace de nom.
global::System.Data.DataTable
est identique à:
System.Data.DataTable
Visual Studio 2008 l'a ajouté au code généré par le concepteur pour éviter les problèmes de références ambigus qui se produisaient parfois lorsque des personnes créaient des classes nommées System ... Par exemple:
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);
}
}
Cependant:
global::System.Console.Writeline("This works");
Pour en savoir plus:
http://msdn.microsoft.com/ en-us / library / c3ay4x3d (VS.80) .aspx
Autres conseils
Pour éviter que des personnes ne le fassent N ° 1 sur cette liste . :)