【问题标题】:importing namespace and using their hierarchy导入命名空间并使用它们的层次结构
【发布时间】:2014-04-24 18:57:13
【问题描述】:

我一直认为包含/导入/使用命名空间会包含其下的所有命名空间,但我在 Visual Studio 2012 中导入命名空间时遇到问题。

我正在使用 VB.net,并且在一个解决方案文件中有两个项目。我正在将一个曾经在 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.“导入System.Data”是否也要导入“System.data.sqlClient”?

2.有没有人知道为什么我必须在 P2 而不是 P1 中的导入中具体说明?

【问题讨论】:

  • 1) 否,因为 System.Data 还包含 SQL Server、ODBC、OleDb 的数据访问命名空间,很少有人同时需要所有这些命名空间。 2) 取决于项目引用和使用/调用的内容

标签: c# vb.net visual-studio-2012 reference namespaces


【解决方案1】:

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

【讨论】:

  • 我查看了项目的参考页面,并没有检查 sqlClient 命名空间,但我确实发现 P1 的配置文件正在添加 sqlClient 命名空间
【解决方案2】:

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

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

这里的原因是您必须打包这些命名空间包含的所有库。因此,如果您导入了每个命名空间,您的二进制文件会变得非常大。

【讨论】:

  • 事情会很快变得非常大,这绝对是有道理的
猜你喜欢
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 2011-12-11
相关资源
最近更新 更多