查看包含多个项目的解决方案时:
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;
答案 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