Quando è necessario utilizzare la parola chiave extern alias
in C#?Quando è necessario utilizzare la parola chiave alias esterno in C#?
risposta
Fondamentalmente ne hai davvero bisogno quando vuoi usare due tipi con lo stesso nome completo (stesso spazio dei nomi, stesso nome di tipo) da diversi gruppi. Si dichiara un alias diverso per ciascun assembly, quindi è possibile fare riferimento a tale alias.
Inutile dire che si dovrebbe cercare di evitare di trovarsi in quella situazione per cominciare :)
Anson Horton ha un good blog post su di esso.
Giusto per aggiungere - anche dopo l'aggiunta di extern dichiarazione di alias nella parte superiore del file comsumer * .cs, il compilatore di default non cerca il tipo che sto usando (che è presente in quell'assembly). Il comportamento predefinito diCompiler è sempre quello di cercare classi e tipi nel corrente e gli assembly referenziati con alias 'global'. Finisco per usare un nome di tipo completo che inizia con il nome dell'alias esterno, ad es. la mia dichiarazione dell'alias esterno era "alias esterno WidgetsVendor1;" e scrivevo ancora codice come 'var wid = new WidgetsVendor1.Widgets.Widget();'. Non posso semplicemente fare ''var wid = new Widgets.Widget() ; ' – RBT
@RBT: No, solo * dichiara * l'alias. Ma potreste usare 'WidgetsVendor1.Widgets;' e scrivere 'var wid = new Widget();'. –
ohh. Interessante! Non lo sapevo. Ho pubblicato i miei commenti in base alla mia osservazione che ho avuto la mattina. Buono a sapersi. Sono in grado di importare gli spazi dei nomi all'interno dell'alias esterno usando la parola chiave 'using'. Grazie. – RBT
È lì per aiutarti a sollevarti da un buco davvero profondo scavato dal controllo delle versioni. Supponi che la tua prima versione del tuo programma utilizzi questa classe
using System;
namespace Acme.Financial.Banking {
[Serializable]
public class BankAccount {
public double Balance { get; set; }
//...
}
}
E con questo hai serializzato molti record di conti bancari. E un ragioniere inizia a lamentarsi dello stato patrimoniale essere fuori da un miliardesimo di un centesimo, in modo da cambiare la classe:
public decimal Balance { get; set; }
Problema risolto, il prossimo cliente ha bilanci felici. Finché non ti viene chiesto di aggiornare un cliente esistente con molti record serializzati nel vecchio formato. Grande problema, non puoi più deserializzare i record da quando la classe è cambiata.
l'alias esterno risolve il problema, è possibile fare riferimento sia alla versione precedente che alla nuova versione della classe nel codice, anche se i nomi dei nomi dei nomi e delle classi sono gli stessi.
Caso di utilizzo molto intuitivo per l'utilizzo dell'alias esterno. – RBT
- 1. Java: quando utilizzare la parola chiave "this"
- 2. Quando è necessaria la parola chiave "typename"?
- 3. Quando la parola chiave "in linea" è efficace in C?
- 4. Quando è appropriato utilizzare la parola chiave extern senza utilizzare l'attributo [DllImport]?
- 5. C# - È "volatile" davvero necessario come parola chiave?
- 6. parola chiave virtuale in C#
- 7. Perché utilizzare la parola chiave globale in C#?
- 8. Utilizzare la parola chiave auto in C++ STL
- 9. Come utilizzare al meglio la parola chiave const in C?
- 10. Quando passare la parola chiave ref in
- 11. È meglio utilizzare gli alias di colonna con o senza la parola chiave AS?
- 12. È possibile utilizzare la parola chiave params in un delegato?
- 13. Quando è necessario utilizzare i blocchi di inizio/fine e la parola chiave Go in SQL Server?
- 14. Quando è necessario utilizzare System.AppContext?
- 15. Manca la parola chiave 'with' in C#
- 16. Quando è necessario utilizzare l'operatore controllato in C#?
- 17. C: vale la parola chiave inline?
- 18. F #: è necessaria la parola chiave "divertente"?
- 19. È spostare una parola chiave in C++?
- 20. Quando è richiesta la parola chiave do in Ruby?
- 21. C# quando usare "Questa" parola chiave
- 22. Utilizzare la parola chiave "this" nell'oggetto JavaScript
- 23. Quando è necessario utilizzare _.bindAll() in Backbone.js?
- 24. La parola chiave `this` è facoltativa quando si accede ai membri in C#?
- 25. Perché utilizzare la parola chiave void?
- 26. Qual è la parola chiave metodo utilizzata in C#?
- 27. In C++, perché la parola chiave non è un riferimento?
- 28. Qual è la parola chiave esplicita per in C++?
- 29. Quando hai usato la parola chiave 'mutabile' C++?
- 30. Parola chiave statica in C#
@masoud Ramezani +1 per questione ur ... –
Ecco un articolo su questo argomento: http://en.csharp-online.net/ECMA-334:_16.3_Extern_alias_directives –