在C#中,我經常在自動生成的代碼中看到global::
。這不是我曾經用過的自己,所以我不知道它的目的是什麼。有人可以解釋這個嗎?什麼是全球::?
什麼是全球::?
回答
全球是指全局命名空間,它可以用來解決問題,讓你可以重新定義類型。例如:
class foo
{
class System
{
}
}
如果你使用一種系統,其中,將在Foo類進行局部範圍,你可以使用:
global::System.Console.WriteLine("foobar");
訪問全局命名空間。
例
using System;
class Foo
{
public void baz()
{
Console.WriteLine("Foo 1");
}
}
namespace Demo
{
class Foo
{
public void baz()
{
Console.WriteLine("Foo 2");
}
}
class Program
{
protected static global::Foo bar = new global::Foo();
static void Main(string[] args)
{
bar.baz(); // would write Foo 1 to console as it refers to global scope
Foo qux = new Foo();
qux.baz(); // would write Foo 2 to the console as it refers to the Demo namespace
}
}
}
如果我有一個帶有全局名稱空間前綴的類的自動生成的類,並且該類名爲Foo,那麼會發生什麼?我有一個我創建的類,也稱爲Foo,它也沒有名稱空間? – 2013-02-22 11:07:04
如果自動生成的類以全局名稱空間爲前綴並且名爲Foo,則global將引用全局名稱空間中的類。在任何名稱空間中只能有一個具有相同名稱的定義。如果您要從另一個名稱空間內創建類的實例,從而爲Foo定義了另一個含義,則它將佔用本地最多的作用域。請參閱編輯 – chrisw 2013-02-22 11:19:20
這表明根命名空間的某個時候,必要的前綴。
它經常加入到生成的代碼,以避免名稱衝突與用戶代碼。
例如,假設您有一個名爲System
的課程,但您希望使用System.String
。您可以使用global::System.String
來區分。
相信::
來自C++使用它的一個命名空間分隔。
在實踐中,我從來沒有使用過,除了在生成代碼。請注意,您也可以通過使用別名來解決一些衝突。例如using String = System.String;
的global
上下文關鍵字,當談到::運算之前,指的是全局命名空間,這是任何C#程序的默認命名空間,否則命名。
的global::
符告訴編譯器開始尋找從根本上命名空間或類起動。您將在系統生成的代碼中看到它,以便代碼始終有效。這樣,如果您的當前命名空間下有一個名稱空間,與代碼嘗試訪問的頂級命名空間相同,則不會有衝突。
例如,假設您有命名空間A和命名空間B以及命名空間B.A,如果我在命名空間B.A中編寫需要引用命名空間A中的類的代碼,而沒有全局::我無法獲取它。如果我引用A.classname,編譯器將在B.A.中查找classname。使用global ::我可以告訴它在global :: A.classname中查找classname,它會在適當的位置找到classname。
如果您從網上資源獲取內容,請提供適當的歸屬信息:[MSDN](http://msdn.microsoft.com/zh-cn/com/en-us/library/cc713620.aspx)和[什麼是C#中的全局關鍵字](http://blog.dmbcllc.com/what-is-the-global-keyword-in-csharp/) – Bart 2013-02-26 10:47:07
k .. @巴特感謝您的評論當我下次回答時,我會記住。但爲什麼這是downvote? – coder 2013-02-26 11:29:30
那不是我的。 – Bart 2013-02-26 11:34:20
- 1. 什麼是:全球(冒號全球)呢?
- 2. 什麼是在全球WP_Query
- 3. 全球步驟是什麼意思?
- 4. 這個全球目標是什麼?
- 5. 什麼是eclipse全球ecore資源集
- 6. 什麼是球拍
- 7. 什麼是弱全球參考?它與全球參考文獻有何不同?
- 8. 爲什麼全球+共享的速度比全球獨自
- 9. CMMotionManager是一個全球資源?這是什麼意思?
- 10. 爲什麼grunt允許全球安裝?
- 11. 什麼的「全球::」在GTK程序
- 12. Python - 全球有什麼優先權?
- 13. 什麼是全球性的關鍵字在JavaScript註釋目的
- 14. R的本地/全球問題是什麼?
- 15. 什麼是全球同步大量數據的最佳方式?
- 16. Struts 2中的全球前沿是什麼?
- 17. 全球聊天應用的正確編程模式是什麼?
- 18. <script>標籤的全球範圍是什麼?
- 19. 「污染全球命名空間」是什麼意思?
- 20. 什麼是全球化和本地化概念
- 21. 什麼是全球寶石中最有用的寶石?
- 22. 爲什麼全球化一個布爾不工作,但全球化的字典
- 23. 是什麼意思前綴「全球::」智能感知是顯示我
- 24. $範圍是全球行事
- 25. 本地還是全球?
- 26. SetWindowsHook Global不是很全球
- 27. 是否在全球領域
- 28. 全球POST總是空
- 29. 不是全球變量嗎?
- 30. 休眠@SequenceGenerator不是全球
http://stackoverflow.com/questions/3552763/why-use-global-keyword-in-net – 2013-02-22 10:51:49
從msdn:http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx – 2013-02-22 10:52:46