Mi piacerebbe capire perché si potrebbe voler utilizzare il prefisso global::
. Nel seguente codice, ReSharper è identificare come ridondante, e in grado di essere rimosso:Perché utilizzare la parola chiave globale in C#?
risposta
È preferibile utilizzare il prefisso namespace globale nel codice generato. Questo è fatto per evitare situazioni in cui un tipo con nome simile esiste nel tuo spazio dei nomi.
Se si crea un tipo di nome System.Diagnostics.DebuggerNonUserCodeAttribute
all'interno del vostro spazio dei nomi si noterà che ReSharper non dice più che la global::
non è necessaria. Il generatore di codice vuole semplicemente evitare qualsiasi collisione con i nomi dei propri tipi.
Molto utile, grazie. –
Risposta breve, semplice e piacevole – CreativeManix
La parola global::
il compilatore di impegnare nomi partire dal namespace globale rispetto al contesto attuale. È necessario nei luoghi in cui un membro associabile esiste in un determinato contesto che ha lo stesso nome di uno globale e quello globale è desiderato.
Ad esempio
class Test {
class System {}
public void Example() {
System.Console.WriteLine("here"); // Error since System binds to Test.System
global::System.Console.WriteLine("here"); // Works
}
La pagina MSDN corrispondente ha alcuni esempi (compreso quello sopra)
"La parola chiave contestuale globale, quando si trova prima dell'operatore ::, fa riferimento allo spazio dei nomi globale, che è lo spazio dei nomi predefinito per qualsiasi programma C# ed è altrimenti senza nome."
Fonte: https://msdn.microsoft.com/en-us/library/cc713620.aspx
Shami Qureshi, se hai intenzione di copiare una risposta parola per parola, devi almeno menzionare la fonte. Sebbene la tua risposta in realtà * non * risponda alla domanda, l'ho modificata per includere l'URL da cui l'hai copiata. – johnnyRose
@ John, Solo curioso - cercando di imparare perché è utilizzato dal processo di code-gen. –
Paul vuole chiaramente essere un rispondente in SO un giorno. Vai Paul! –
@ John-Saunders Dire a qualcuno di ignorare la loro curiosità è un consiglio orribile. Come ti aspetti esattamente che qualcuno impari? @ Paul-Fryer Penso che questa sia una grande domanda - mi sono spesso chiesto la stessa cosa ma non sono andato in giro a chiedere. – Jake