站长 发表于 2024-4-14 13:42:23

C#编程类与对象的使用以及字段和属性的对比

一、关于类与对象
1、为什么要学习面向对象编程? 答:面向过程编程,很难解决复杂业务逻辑和适应业务需求的变化。而面向对象能够将程序很好的"模块化设计",清晰的"分层组合",方便的"业务扩展"。
2、程序观察 结论:我们学习面向对象编程主要学习什么?主要是学习面向对象编程的原则、方法、技巧、模式、经验等。
3、从生活中的"类"转换到程序中的"类" 答:生活中很多东西都可以归为一个类。比如人:(男人、女人)
而软件中的类,是为了处理相关的数据。 比如学校:学号、姓名、性别、班级、电话、地址…比如公司:编号、姓名、性别、部门、电话、地址、邮件...
静态属性:描述对象的基本特征信息(数据)(属性)动态行为:描述这个对象能做什么,如何做?(方法)
类的基本概念:就是把一个事务中,我们所要关心特性和行为抽取出来,组合到一起,就称为一个类。
4、类的规范(组成)
访问修饰符 class 类的名称 {//字段部分 //属性部分 //方法部分 }
特别提示:一个类可以只有属性、只有方法、也可以属性、方法全部都有,但是不建议添加只有字段的类。
二、体验类与对象的使用
首先要清楚:类只是规定了,它能存储什么类型的数据、能够完成什么任务,但是没有具体的数据。

类本身也是一种数据类型(自己定义的数据类型)
对象创建:以类为模板,给他赋值具体的数据。
特别的:使用new关键字,会将类调都内存中,从而以对象形式存在。对象的属性:对象名.属性名=值;
对象的方法:对象名.方法名(参数…);

总结【1】访问修饰符:默认是internal (内部的),只能在当前程序集内部使用这个类(类库、exe可启动项目);public:公共的,可以在程序集外面使用。【2】类的名:使用pascal命名法(首字母大写)。
三、属性(Property) 1、使用ILDasm反汇编工具发现get和set其实是两个方法,并且每一个属性都有对应的私有字段。
2、断点观察get和set发现,当我们给属性赋值的时候,其实是调用set方法,给对应的私有字段赋值;当读取属性值的时候,其实是调用了get方法,从对应的私有字段里面把值取出来。
属性:本身其实并没有保存数据,数据是保存到属性对应的私有字段中。 属性作用:其实是外接访问对象数据的"入口"。像USB接口一样,数据保存到哪里?在存储芯片。
记住:属性是为了更好的实现需求的变化的扩展,从而让一个属性可以实现多样的需求!

3、属性的扩展

【1】增加业务判断逻辑。

【2】设置只读字段功能。

【3】设置只读业务逻辑。(可以没有私有字段)

4、属性使用是必要的
测试:基于dgv数据显示,测试属性绑定的重要性。

5、属性和字段对比 【1】字段,又称为"成员变量" 第一、目的:字段是为类的内部方法,或者方法之间传递数据使用,强调对内使用;第二、修饰:字段一般用private修饰,很少用public;第三、读写:字段可以读写均可,也可以用readonly限制为只读,但是不能添加业务。【2】属性第一、目的:属性是对外提供数据访问、本身不保存数据,强调对外使用;第二、修饰:属性都是public,从来不用private;第三、读写:属性可以轻松的实现单独读写控制,并且可以添加任意需要的业务逻辑;第四、强制:dgv列表必须强制使用属性,不能使用公有字段。

6、属性使用的新特性扩展(4.6或以上版本) 【1】属性直接初始化【2】属性表达式

补充:使用属性的时候,有的地方也可以用方法代替,但是我们设计的时候,如果你侧重的是属性(比如你需要在dgv中显示)就要用属性,如果是单独的行为,可以用方法。

7、对象类型的属性使用 总结:类本身就是一种数据类型(引用类型),所以,类中的属性或者变量(成员变量、局 部变量)也可以是类类型(对象类型),开发中还会出现"集合对象"类型。
例如:一个设备,对应一个传感器,属性就要用类类型。一个设备,对应多个传感器,属性就要用类类型数组。



页: [1]
查看完整版本: C#编程类与对象的使用以及字段和属性的对比