Le qualificatif d'espace de nom global vous permet d'accéder à un membre dans l'espace de noms global ("vide").
Si vous appelez un type non qualifié (par exemple MyClass.DoSomething() plutôt que MyNamespace.MyClass.DoSomething()), il est supposé se trouver dans l'espace de noms actuel. Comment alors qualifier le type pour dire qu'il est dans l'espace de nom global/vide?
Cet exemple de code (application de la console) devrait illustrer son comportement:
using System;
namespace MyNamespace
{
public class Program
{
static void Main(string[] args)
{
MessageWriter.Write(); // writes "MyNamespace namespace"
global::MessageWriter.Write(); // writes "Global namespace"
Console.ReadLine();
}
}
// This class is in the namespace "MyNamespace"
public class MessageWriter
{
public static void Write()
{
Console.WriteLine("MyNamespace namespace");
}
}
}
// This class is in the global namespace (i.e. no specified namespace)
public class MessageWriter
{
public static void Write()
{
Console.WriteLine("Global namespace");
}
}
Cela ne répond pas à la question pourquoi. Le code généré utilise les types déclarés dans les espaces de noms et toujours global :: est utilisé. –
@Ihar: Global est utilisé d'une manière similaire pour spécifier qu'un espace de noms ne doit pas être un sous-espace ... –
Non - la question pose trois choses: Qu'est-ce que cela signifie (expliquée), que fait ce préfixe et où devrait l'utiliser (que vous saurez une fois que vous aurez compris les deux autres points). Votre question - "pourquoi est-il utilisé dans les fichiers de concepteur" n'a pas été posée par le questionneur d'origine. –