为什么我们参考其他项目?

时间:2012-07-09 11:02:56

标签: c# visual-studio-2010 inheritance reference namespaces

查看包含多个项目的解决方案时:

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;

3 个答案:

答案 0 :(得分:9)

  

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

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

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

如果编译器不了解该类型,您希望如何使用继承来创建从某种类型派生的类?

  

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

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

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

答案 1 :(得分:0)

该项目是自足的可编译单元,必须编译到有效的程序集文件中。这就是为什么您需要明确指定每个项目需要哪些参考,以便能够从其他人单独编译

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

答案 2 :(得分:0)

  

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

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

  

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

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

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

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

MyCodebase.MyAssembly.MyNamespace.MyOtherNamespace.SomethingElse.TextBox

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

TextBox