什麼時候我們必須在C#中使用extern alias
關鍵字?什麼時候我們必須在C#中使用extern別名關鍵字?
回答
基本上,只有當你想從不同的程序集中使用具有相同完全限定名稱(相同名稱空間,相同類型名稱)的兩種類型時才真正需要它。您爲每個程序集聲明不同的別名,以便通過該別名引用它們。
不用說,你應該儘量避免陷入這種情況下手:)
安森霍頓有good blog post了。
只是添加 - 即使在添加extern別名聲明位於comsumer * .cs文件的頂部,編譯器默認情況下不會查找我正在使用的類型(它存在於該程序集中)。編譯器的默認行爲始終是在當前搜索類和類型並引用具有'全局'別名的程序集。我最終使用以extern別名開頭的完全限定類型名稱,例如我的extern別名聲明是'extern alias WidgetsVendor1;'並且仍然在編寫類似於'var wid = new WidgetsVendor1.Widgets.Widget();'的代碼。'我不能簡單地這樣做 - 'var wid = new Widgets.Widget() ;' – RBT 2016-10-19 00:35:17
@RBT:不,它只聲明別名。但是,你可以使用WidgetsVendor1.Widgets;並且寫下var wid = new Widget();'。 – 2016-10-19 06:01:38
ohh。有趣!我不知道。我根據我在早上觀察到的情況張貼了我的評論。很高興知道。我可以使用'using'關鍵字在extern別名中導入名稱空間。謝謝。 – RBT 2016-10-19 07:08:42
它可以幫助您擺脫由版本控制挖出的真正深邃的洞穴。你說你的程序的第一個版本使用這個類
using System;
namespace Acme.Financial.Banking {
[Serializable]
public class BankAccount {
public double Balance { get; set; }
//...
}
}
,你被序列化大量的銀行賬戶記錄它。和會計師開始抱怨資產負債表一美分的十億被關閉,所以你更改類:
public decimal Balance { get; set; }
問題解決了,接下來的客戶有幸福的資產負債表。直到您被要求用舊格式的許多序列化記錄來升級現有客戶時才需要。大問題,你不能反序列化記錄了,因爲類已經改變了。
extern別名解決了您的問題,即使名稱空間名稱和類名稱相同,也可以在代碼中引用舊版本和新版本的類。
使用extern別名非常有洞察力的用例。 – RBT 2016-10-19 00:42:35
- 1. 什麼時候我們必須在C#中使用checked運算符?
- 2. 在c中實現字符串隊列我什麼時候必須使用malloc
- 3. 什麼是PostgreSQL函數,什麼時候我必須使用它們?
- 4. 什麼時候在C++中使用extern「C」?
- 5. 在C++中使用extern關鍵字
- 6. System.IO.StreamWriter:爲什麼我必須使用關鍵字「using」
- 7. 我什麼時候必須使用scikit的fit方法學習?
- 8. 什麼時候我必須使用boost :: asio:strand
- 9. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 10. 我們是否必須在打字稿中使用「this」關鍵字?
- 11. 我什麼時候必須鏈接C語言庫?
- 12. 什麼時候我們必須通過調用ByteBuffer.release()來釋放netty5中的ByteBuffer?
- 13. 我們應該什麼時候在C#中使用事件
- 14. 我們什麼時候在Objective-C中使用static __unsafe_unretained?
- 15. 什麼時候我們在C#中使用嵌套類?
- 16. 什麼時候我們在Objective-C中使用「 - >」?
- 17. 什麼時候我們必須在C#中使用隱式和顯式運算符?
- 18. 什麼時候使用靜態變量和自我關鍵字
- 19. 什麼時候在mongodb中使用新的關鍵字?
- 20. 什麼時候在Python中使用關鍵字「self」
- 21. 什麼時候需要在python中使用全局關鍵字
- 22. 什麼時候你會在PHP中使用$ this關鍵字?
- 23. 什麼時候必須圍繞try/catch?
- 24. 什麼是SWC,什麼時候/我們在Flash中使用SWC
- 25. 什麼時候我們使用let rec?
- 26. Android:我們什麼時候使用getIntent()?
- 27. 我們什麼時候使用XMLSerialization?
- 28. 爲什麼我們必須在hadoop中使用多個節點?
- 29. 什麼樣的代碼我必須在OnCreate()和什麼時候我必須把它放在OnCreateView()?
- 30. 什麼時候通過ref關鍵字
@masoud ramezani +1爲你的問題... – 2010-02-27 12:20:17
這裏是關於這個主題的文章:http://en.csharp-online.net/ECMA-334:_16.3_Extern_alias_directives – 2010-02-27 12:28:55