C# 类(一)——类库、命名空间、类、对象

1、相关概念

1.1 类库

类的仓库,用来放命名空间和类。其实就是一个文件,将相关的东西组织在一起。类库是命名空间和类的物理基础,类库就好比是一个仓库,命名空间和类是仓库里面的物品,如果连仓库都没有,又何谈物品呢?

1.2 命名空间(namespace)

C#中的命名空间是一种用来组织和管理代码的机制,它可以将一组相关的类、接口、委托和其他类型组织在一起,避免命名冲突,提高代码的可维护性和可重用性。
牛顿说过,“如果我看得更远,那是因为我站在巨人的肩膀上”,在编程中,我们会使用别人写好的类库,试想一下,如果我们调用的两个类库中,存在相同名字的类,在我们用类创建对象或者调用类的静态成员时,电脑怎么知道我们调用的是哪一个类库中的类呢。在同一个文件夹下不能有同名的文件,不同的文件夹下可以有同名的文件,也是同样的道理。
可能就要问了,为什么不给不同类库中的类取不同的名字呢,这样不就可以避开这个问题吗。首先,不同类库由不同的程序员编写的,难免会有名字的重复;其次,就是为了简单方便了,比如说在web开发和windows桌面应用开发中,都会用到Button类,即按钮,如果不采用命名空间,那我们就需要给Button命不同的名字加以区分,如WebButton和WindowsButton,很显然,名字变长了,程序员需要记忆的名字也变多了。

官方定义:命名空间组织在程序集中定义的对象。

1.3 类(class)和对象(object)

在C#编程指南中的定义是这样的。

  • 类:“类”是一种构造,通过使用该构造,您可以将其他类型的变量、方法和事件组合在一起,从而创建自己的自定义类型。类就像一个蓝图, 指定该类型可以进行哪些操作。
  • 对象:对象是基于类的具体实体,有时称为类的实例。从本质上说,对象是按照此蓝图分配和配置的内存块。

对于初学者,这个定义挺难理解的。
类是对现实世界事物进行抽象所得到的结果,也就是说类是对现实世界中的一个具体的东西比如汽车,抓取主要要素后(因为汽车太复杂了,只能选主要矛盾,丢掉次要矛盾)建立的模型。
对象是对模型的应用。
这里举一个例子——“汽车”和“一辆汽车”。

  • 汽车(类):只是一个概念,是不同于列车和飞机的概念,汽车有它的参数(变量)如长、宽、高、质量;汽车有它的功能(方法),如驱动、制动、转向;汽车有AEB自动紧急制动系统,当传感器感知障碍物距离近时,会触发制动系统(事件)。汽车这样一个大的概念将小的概念组合到一起,形成了汽车,小的概念也将汽车和列车和飞机区分开来了。所以说,类指定该类型可以进行哪些操作,也就是说,类的作用是先告诉你它能给你提供什么,等到你真的需要使用时,知道怎么用。
  • 一辆汽车(对象):说的是现实世界中真的有这么一辆汽车实物,它是汽车这个概念的实物化(实例化),你可以利用它提供给你的东西(变量,方法,事件…)满足需求。

2、Hello,world

2.1 命名空间和类

打开visual studio,创建一个 C#控制台应用 项目。

在这里插入图片描述
“class”后面水蓝色的“Program”就是类名,“namespace”后面的“Test”就是命名空间的名字。

在这里插入图片描述
在Main函数中输入一行代码,代码实现在终端打印“Hello,world”。会发现,“using System”从原来的灰色变成了高亮,这说明System命名空间在代码中用到了,也就是说Console是System命名空间下的一个类。“Console.WriteLine”说明“WriteLine”是“Console”类的一个静态方法。

在这里插入图片描述
点击Console,右键,“转到定义”,快捷键F12。

在这里插入图片描述

“Console”类放在了“System”命名空间下,意思是说,Console类用System这个命名空间组织起来了,当我们想用这个类时,可以很方便的从名称空间中把这个类找出来。
我们也可以把“using System;”删掉,这时候在代码中直接写Console就会报错,这是因为visual studio并不知道Console是什么,那么我们就需要把命名空间带上。
所以,从这里就可以看出“using System;”的作用了,当程序中只有一条打印语句时,没关系,我们可以写全称(权限命名)“System.Console.WriteLine(“Hello,world”);”,但是,如果程序中有很多个地方需要打印,那么每次这样写就很麻烦,先在程序的开头引入命名空间,在后面就可以省略命名空间(比如当程序中用到Console类时,vs会从所有引用的命名空间中检索,当找到System命名空间时,找到了Console类,就可以了),简单很多。

在这里插入图片描述
在这里插入图片描述

2.2 类和对象

右键“引用”,“添加引用”,输入System.Windows.Forms类库名,打对勾,确定。这样,就引用到了winform类库了,类库中包含命名空间和类。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

引用命名空间System.Windows.Forms,命名空间下有一个Form类,它继承于ContainerControl类,Form类中有很多函数,我们调用其中的一个函数ShowDialog,用来显示一个窗体。

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;  //引用命名空间

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Form f1 = new Form();   //new 分配内存;Form() 构造函数,初始化Form类的新实例
            f1.ShowDialog();        //调用对象的方法
        }
    }
}

我们可以打开System.Windows.Forms类库具体来看看,双击类库,打开对象浏览器,可以看到类库中有7个命名空间,打开System.Windows.Forms命名空间,可以看到它的成员。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

那么我们就知道了,在创建项目时,不同类型的项目的本质区别在于,会引用不同的类库。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值