2012-03-27 53 views
1

只是想知道推薦的做法是什麼導入命名空間。你總是更好地導入命名空間,比如代碼的fisrt片段,還是你最好用你的代碼內聯鍵入完整的命名空間。進口:你應該嗎,你不應該,語法和最佳實踐

我喜歡這兩種方法;第一個代碼更整潔,代碼更少,第二個代碼可以準確識別訪問某些邏輯的位置,從而在查看代碼時可以提供某種清晰度。只是想知道是否有利弊,或者這是否只是個人偏好,目前我使用組合但希望保持一致。

Imports Core.Tech 
Public SomeClass 
    Public Function New() 
    Return TechMethods.SomeTechFunction() 
    End Function 
End Class 


Public SomeClass 
    Public Function New() 
    Return Core.Tech.TechMethods.SomeTechFunction() 
    End Function 
End Class 
+1

對SO來說不是一個好問題。每個人都有自己的看法,使用對你個人最有意義的東西。 – mellamokb 2012-03-27 14:38:52

+0

公平不夠...只是好奇,如果有利弊無論是。 – baileyswalk 2012-03-27 14:56:26

回答

1

這主要是風格問題,但在.NET中的主要模式是利用Import語句。不使用Import語句會在代碼中導致不必要的冗長。特別是當你考慮一些.Net命名空間的非常長的名字時。

例如

Dim map As New System.Collections.Generic.Dictionary(Of System.Int32, System.String) 
' vs ... 
Dim map As New Dictionary(Of Int32, String) 

正如我提到這主要是風格問題,但也有一些情況下,它很重要。最重要的是使用擴展方法。如果您不使用任何Import語句,則此功能的用處將受到嚴重限制,因爲它會將其限制爲在當前名稱空間中定義的擴展方法(再見,LINQ)。

+0

謝謝......這更多的是關於引用我自己的項目。特別是在引用多個項目時,您可以使用更詳細的方法即時確定哪些類來自哪個項目。但是,有一些關於輸入剛纔感覺錯誤的完整名稱空間的信息...... – baileyswalk 2012-03-27 14:51:14

2

當涉及到Imports時,您應該進行的另一項考慮是如果將有多個具有相同名稱的類(或同時包含方法和類)。

例如,在System.Timers,System.ThreadingSystem.Windows.Forms命名空間中有三個不同的定時器。如果您想在WinForms應用程序中使用前兩個定時器之一,則需要明確提及名稱空間或創建別名。

'without imports 
Dim timer As System.Threading.Timer 

'imports 
Imports System 
Dim timer As Threading.Timer 

'alias 
Imports ThreadingTimer = System.Threading.Timer 
Dim timer As ThreadingTimer 
相關問題