剖析Hello,World程序

  • 类(class)构成程序的主体
  • 名称空间(namespace)以树型结构组织类(和其他类型)

    • 例如Button和Path类
    • 例:在一个图书馆里面,书按类别分类为数个名称空间,每本书都是一个类的框架。允许不同的名称空间下有仅名称相同的类。
      1. using sysem; //引用system名称空间
      2. namespace HelloWorld
      3. {
      4. class Program
      5. {
      6. static void Main(string[] args)
      7. {
      8. System.Console.WriteLine("Hello,World!"); //全限定名,指定某个名称空间的某个类
      9. Console.WriteLing("Good morning!"); //在已知的所有名称空间内寻找已知的类
      10. }
      11. }
      12. }

      类库的引用

  • 类库引用是使用名称空间的物理基础

    • 不同技术类型的项目模板(例如Windows Form和Console)会默认引用不同的类库(dll:动态链接库)
    • 当做不同的项目时VS会给我们自动加载不同的类库使用不同的编辑器,这样我们使用的类同名但效果不同(不是一个类库的)
    • 例:不同的图书馆的同一本书但是不是一个作者(内容有差)
  • DLL引用(黑盒引用,无源代码)
    • 别人编写的类库封装成DLL你来引用它,可以使用里面所有名称空间的所有类。
    • 但是如果别人的DLL本身有一定错误你这时没法修改他的类库(依赖性)
    • 当你想在Console的项目模板中使用Windows Form的窗体时,可以在类库中引用System.Windows.Form。然后在程序中做如下声明(using) ```csharp using System; using System.Windows.Forms;

namespace HelloWorld { class Program { static void Main(string[] args) { Form form = new Form(); form.ShowDialog(); } } } ```

  • NuGet
    • 网络上其他人分享的关于某个项目模板的所有DLL库,一键添加,高效快捷。(同样可能出问题,找下载量高的)
  • 项目引用(白盒引用,有源代码)

    依赖关系

  • 类(或对象)之间的耦合关系

  • 优秀的程序追求“高内聚,低耦合”
    • 教学程序往往会违反这个原则
  • UML(通用建模语言)类图
    • 图:Program类非常依赖Console类 03 认识类和名称空间 - 图1