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
- 1. Perché utilizzare la parola chiave void?
- 2. Utilizzare la parola chiave auto in C++ STL
- 3. Come utilizzare al meglio la parola chiave const in C?
- 4. Perché utilizzare definire la parola chiave per definire una funzione
- 5. parola chiave virtuale in C#
- 6. Perché usiamo la parola chiave volatile in C++?
- 7. In C++, perché la parola chiave non è un riferimento?
- 8. Utilizzare la parola chiave "this" nell'oggetto JavaScript
- 9. classi PHP perché utilizzare la parola chiave pubblica?
- 10. Java: quando utilizzare la parola chiave "this"
- 11. C# 4 parola chiave dinamica - perché no?
- 12. Manca la parola chiave 'with' in C#
- 13. Parola chiave "nice" in C++?
- 14. Un altro modo di utilizzare continuare parola chiave in C++
- 15. C: vale la parola chiave inline?
- 16. perché la parola chiave overload è stata rimossa dal C++?
- 17. Registrati parola chiave in C++
- 18. Perché la parola chiave globale non è richiesta in questo caso?
- 19. Perché JSLint proibisce la parola chiave "this"?
- 20. Parola chiave statica in C#
- 21. parola chiave 'out' in C++
- 22. È possibile utilizzare la parola chiave params in un delegato?
- 23. Parola chiave dell'operatore C++
- 24. Che cosa fa esattamente la parola chiave "using" in C++?
- 25. Come utilizzare la parola chiave numero di revisione globale con TortoiseSVN?
- 26. Problema con la parola chiave extern in C++
- 27. Perché la parola chiave params non è contestuale?
- 28. fanno parola chiave in collegamento automaticamente, a livello globale
- 29. C# 6/C++ ref Parola chiave errore
- 30. parametri denominati e la parola chiave params in C#
@ 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