2012-03-27 41 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 
相关问题