Quelle est la différence entre & # 8220; global :: System & # 8221; et & # 8220; Système & # 8221; dans .NET?

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

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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top