1

在查看具有多个项目的解决方案时:

1)为什么要添加对其他项目的引用?我们不能只使用继承吗?

2)使用Visual Studio添加引用后,为什么还要将项目添加到命名空间系统?例如:using myReferenceProject;我认为 IDE 会这样做。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using myReferenceProject;
using System.Data.SqlClient;
using System.Data;
4

3 回答 3

9

1)为什么我们要参考其他项目?我们不能只使用继承吗???

他们是两个完全不同的概念。

添加对另一个程序集的引用基本上是说:“我希望能够使用其中的一些代码。请让编译器知道此代码存在,并可选择将其复制到输出目录中,以便它在执行时也存在。”

如果编译器不知道该类型,您将如何使用继承来创建从某种类型派生的类?

2)在我们使用visual studio IDE给出参考之后,为什么我们必须将项目添加到命名空间系统???

因为程序集和命名空间也是不同的概念。指令只是对using编译器说“当我在代码中引用类型时Foo,请查看这些名称空间以尝试解析它。” 该类型可能来自您引用的任何程序集。

了解程序集和命名空间之间的区别非常重要。尽管它们的名称通常相似(Foo.Bar.dll通常在命名空间中提供类型Foo.Bar),但它们在概念上是不同的。

于 2012-07-09T11:05:00.910 回答
0

该项目是一个自给自足的可编译单元,必须编译成有效的汇编文件。这就是为什么您需要特别指定每个项目需要哪些引用,以便能够与其他项目分开编译。

项目级别没有任何继承概念。

于 2012-07-09T11:06:10.553 回答
0

1)为什么我们要参考其他项目?我们不能只使用继承吗?

这个问题没有意义。继承与项目引用有什么关系。你能详细说明吗?

2)在我们使用Visual Studio IDE提供参考之后,为什么我们必须将项目添加到命名空间系统?

因为在引用另一个程序集的程序集(添加对项目的引用时会发生这种情况)和知道在哪里找到类的语言之间存在固有差异,当您在文件中使用指令时会发生这种情况。using

例如,假设您在项目中创建了一个名为TextBox. 然后在另一个文件中你想使用那个类。语言如何知道您是在引用自定义TextBox类还是引用程序集中的另一个类?这个问题的答案是命名空间。通过使用其名称空间完全限定类名,您可以告诉编译器您正在使用哪个类。

using指令是一种为每个文件指定命名空间一次的方法,而不是每次使用该类(或该命名空间中的其他类)时。因此,如果您需要TextBox在一个文件中多次引用您的类,您不会希望每次都写这个:

MyCodebase.MyAssembly.MyNamespace.MyOtherNamespace.SomethingElse.TextBox

相反,您包含using整个命名空间的指令,因此您只需编写以下代码:

TextBox
于 2012-07-09T11:09:14.693 回答