2014-04-24 38 views
0

我一直认为,包括/进口/使用一个命名空间将包括其下的所有的命名空间,但我在导入的命名空间在Visual Studio 2012年导入命名空间和使用它们的层次

我使用VB的问题。净,并在一个解决方案文件内有两个项目。我正在将一个曾经在P1内部的类转移到P2中。 P1中的代码只是“Imports System.Data”,但在新的项目/类中,我不能说我必须具体说“Imports System.Data.SqlClient”,否则Visual Studio不知道什么SqlConnection的是

Imports System.Data 
'Imports System.Data.SqlClient 

Public Class Class1 

    Private con As SqlConnection 


    Public Function returnInt2() As Integer 
     Return 2 
    End Function 

End Class 

我的问题是双重的

1.Should “进口System.Data” 还导入 “System.Data.SqlClient的”?

2.任何人都有想法,为什么我必须具体在我的P2进口,但不是P1?

+1

1)否,因为System.Data包含SQL Server,ODBC,OleDb的数据访问名称空间,而且很少有人需要同时使用它们。 2)取决于项目的参考和使用什么 – Plutonix

回答

1

VB.Net项目允许您指定项目范围的命名空间导入。这些可以在项目属性的参考页面上看到。很可能您的第一个项目P1具有项目范围的System.Data.SqlClient导入,而P2没有。

+0

我查看了项目的参考页,并没有检查sqlClient命名空间,但我确实找到了sqlClient命名空间由P1的配置文件添加 – Kevin

1

不导入名称空间不会导入所有子名称空间。如果你这样做,可能会有成百上千的命名空间。

导入命名空间将使您可以访问该特定命名空间的所有子成员。

这里的推理是你必须打包那些名称空间包含的所有库。因此,如果您曾经导入过每个名称空间,那么您的二进制文件将变得非常大

+0

这绝对有意义,事情会非常迅速地变得非常大 – Kevin