【C#语言入门】01.初识类与名称空间
一、剖析Hello,World程序
- 类(class)是构成程序的主体
- 名称空间(namespace)以树型结构组织类(和其他类型)
名称空间可以有效的对成百上千的类进行分类管理,方便查找修改,也可以防止出现同名类的冲突。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorld
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello,World!");
}
}
}
类:Progarm和Console就是类,Progarm是我们自己写的。**由于C#是完全面向对象的语言,因此程序本身(Program)和入口(Main)都是包含在类里面的。**Console类是微软提前准备好的,可以直接拿来用
名称空间:HelloWorld 是名称空间,这是我们自己写的名称空间,可以方便别人调用这个名称空间里面的类。**using System 是引用System这个名称空间到我们的程序中来。**若不引用就会无法使用他们内包含的类(例如Console)。程序会不知道Console这个类来自哪里,但是你可以写System.Console.WriteLine("xxxxxx")
只引用一条,有点累,所以还是在程序最前面引用System这个名称空间比较省时间。
如果你引用的几个名称空间内有同名的类,那就不得不使用全限定命名方式了。所以不要一股脑的引用太多的名称空间。
二、类库的引用
- 类库引用是使用名称空间的物理基础*(名称空间如果是书架的话,那类库就是图书馆)*
- 不同技术类型的项目会默认引用不同的类库
- DLL引用(黑盒引用,无源代码)
- NuGet简介
- 项目引用(白盒引用,有源代码)
DLL引用:通过“引用——添加引用——浏览”直接在程序中添加你下载好的别人的DLL文件。黑盒引用有局限性,若内部代码有错,使用者无法直接修改,必须由别人修改完再编译再发过来才能解决你程序上的问题。**存在依赖性。**就算你是命令行程序,也可以通过引用system.windows.forms的dll文件,调用里面的类让他显示窗口。
NuGet:用于解决比较复杂的依赖关系,库之间也存在着依赖关系,使用高级的库必须要同时引用底层的库,同时底层的库出现问题,高层的库也无法使用,非常的麻烦,也很容易造成不易察觉的BUG(重名或者版本不同)。而NuGet安装包可以打包带走全部的类库,非常的方便(而且很多的线上包)。
项目引用:一个项目可以被包含在多个Solution中,单个Solution中可以有多个项目。这样出现问题可以找到源头解决,方便且可靠。
三、依赖关系
- 类(或者对象)之间的耦合关系
- 优秀的程序追求**“高内聚,低耦合**(数据和功能放在他该放的地方,类或者类库之间的关系尽量低耦合)
- 教学程序往往会违反这个原则(教学往往侧重内容,少了原则)
- UML(通用建模语言)类图:展示类与类之间的关系。
四、排除错误
- 仔细阅读编译器的报错
- MSDN文档与搜索引擎结合