Je voudrais comprendre pourquoi vous pourriez vouloir utiliser le préfixe global::
. Dans le code suivant, ReSharper l'identifie comme redondant et peut être supprimé:
Réponses
Trop de publicités?Le mot-clé global::
, le compilateur pour lier des noms commençant dans l'espace de noms global plutôt que dans le contexte actuel. Il est nécessaire dans les lieux où un bindable le membre existe dans un contexte donné qui a le même nom que mondiale, et le programme mondial est souhaitée.
Par exemple
class Test {
class System {}
public void Example() {
System.Console.WriteLine("here"); // Error since System binds to Test.System
global::System.Console.WriteLine("here"); // Works
}
Le correspondant de la page MSDN a un peu plus d'exemples (dont celle ci-dessus)
Il est préférable d'utiliser le préfixe d'espace de noms global dans le code généré. Ceci est fait pour éviter les situations dans lesquelles un type nommé similaire existe dans votre espace de noms.
Si vous créez un type nommé System.Diagnostics.DebuggerNonUserCodeAttribute
dans votre espace de noms, vous remarquerez que ReSharper ne dit plus que le global::
n'est pas nécessaire. Le générateur de code veut simplement éviter toute collision avec les noms de vos propres types.