55 votes

Pourquoi utiliser le mot clé global en C #?

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é:

texte alternatif

65voto

JaredPar Points 333733

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)

51voto

Martin Liversage Points 43712

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.

2voto

Shami Qureshi Points 21

Le mot-clé contextuel global, lorsqu'il se trouve avant l'opérateur ::, fait référence à l'espace de noms global, qui est l'espace de noms par défaut de tout programme C # et est autrement anonyme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X