只要您嘗試使用同時存在於當前作用域名稱空間層次結構中的名稱空間,就會發生這種情況。讓我用下面的例子來解釋我:
假設你有下面的代碼:
Namespace Company.Application
Module Module1
Sub Main()
'Code Goes Here
End Sub
End Module
End Namespace
Namespace Company.Application
Public Class ApplicationClass
End Class
End Namespace
Namespace Company.Business
Public Class BusinessClass
End Class
End Namespace
Namespace Business
Public Class RootLevelBusiness
End Class
End Namespace
現在讓我們看看什麼是暴露我們去的時候使用Business
命名空間在我們的模塊(我們應該預料到看到RootLevelBusiness
類
但我們不要!
這是因爲代碼已經工作了,它在當前名稱空間的層次結構中找到了方法,並在找到根之前找到了一個業務類。爲了幫助證明,看看會發生什麼,當我們包括Company
:
你會看到,Company
是灰色的,因爲它並不需要它。它將運行相同的代碼,無論它是否來自公司,因爲我們已經在名稱空間中。
解決方法 - 使用Global
如果您想在線資格類,你需要告訴編譯器解析類時不看你的當前命名空間內的一種方式。對於這一點,使用Namespace Global
其中規定:
一種新的方式,以「逃離」你的班列項目的根命名空間的
全球告訴編譯器從頭開始,在這種情況下,我們立即找到商業命名空間。
您可以通過Imports
聲明不使用全局添加類的原因是因爲Imports
是默認的全局。由於必須在定義任何Namespaces
之前聲明Imports
,因此您可以(儘管可能不應該)聲明儘可能多的名稱空間,但導入語句無法推測該命名空間將在該文件其餘部分的任何後續代碼塊中的內容如你想在一個單一的文件。出於這個原因,Imports將始終從任何名稱空間的根開始,並且工作正在進行。