剖析Hello,World程序

  • 类(class)构成程序的主体

    • 类可以以中文命名
    • 类可以重名,比如Button和Path类,但必须放在不同的名称空间里,且引用时必须用全名
    • 如Path类,既可以表示文件路径System.IO.Path,也可以表示形状System.Windows.Shapes.Path
  • 名称空间(namespace)以树型结构组织类(和其他类型)

    • 判断一个类隶属于哪个名称空间,可以查MSDN帮助文档
    • ctrl+.或者alt+enter快捷键可以自动提示引用名称空间
    • Hello,world示例 ```csharp using System; //引用System名称空间 using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace HelloWorld //Helloworld为名称空间 { class Program //Program为类 { static void Main(string[] args) { Console.WriteLine(“Hello,World!”); //Console是C#封装的类,WriteLine()是Console类中的一个方法 //如果没有引用名称空间(using System),则此处需要写全名称空间,级System.Console.WriteLine() } } } ```

何为类库

类库(程序集)是使用名称空间的物理基础,即名称空间和类都放在类库中。调用名称空间的某个类时,必须提前引用其隶属的类库。

  • 不同技术类型的项目会默认引用不同的类库
  • 类库的引用在解决方案->引用中,如下:

image.png

类库的引用

  • DLL引用(黑盒引用,无源代码)

    • 引用DLL,需配合说明文档,MSDN帮助文档实际就是一个大型的类库说明文档
    • 例如在Console控制台程序中,使用WindowsForm的Form类
      • 首先引用类库,在解决方案中 —> 引用 —> 添加引用System.Windows.Forms
      • 然后在程序中引用名称空间,using System.Windows.Forms;
      • 最后就可以在程序Main方法中使用Form类,Form frm = new Form();
    • NuGet简介:NuGet使用直接引用类库包,比如想引用一个库,但是此库含有更底层的其他多个库,需要一一引用,使用NuGet可以直接引用包即可。例如使用NuGet引用EntityFramework。
  • 项目引用(白盒引用,有源代码)

    • 首先在解决方案中 —> 添加现有项目 —> 选择需要引用的类库项目
    • 然后在应用的项目中 —> 添加引用 —> 项目 —> 选择并添加该类库
    • 最后可以在应用项目中的Main方法中使用该类库中的类
  • 新建类库项目

    • 首先在解决方案中 —> 新建项目 —> 选择类库(.NET Framework)
    • 然后命名一个名称空间,创建一个功能类,类中定义一些方法
    • 最后可以在主程序中进行白盒引用或黑盒引用

依赖关系

  • 类(或对象)之间的耦合关系
  • 优秀的程序追求”高内聚,低耦合”,设计程序时应该尽量遵循低依赖关系
    • 类库之间:一些类精确、清晰地归类到一个类库中,类库之间低依赖
    • 类之间:一些数据、功能该属于哪个类,就放到哪个类中,类之间低依赖
  • UML(通用建模语言)类图
    • 以下Program类依赖在Console类上,两者之间是紧耦合关系

image.png

排除错误

  • 仔细阅读编译器的报错
  • MSDN文档与搜索引擎结合