今天是: 2024-04-30    "全国交通安全反思日"  增强国民的交通安全意识

技巧网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问移动社区

搜索
热搜: PLC 视觉 活动
查看: 103|回复: 0

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

[复制链接]

  离线 

TA的专栏

累计签到:245 天
连续签到:1 天

75

主题

5

回帖

336万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3360439
发表于 2024-4-14 13:42:23 | 显示全部楼层 |阅读模式
一、关于类与对象

1、为什么要学习面向对象编程?
答:面向过程编程,很难解决复杂业务逻辑和适应业务需求的变化。而面向对象能够将程序很好的"模块化设计",清晰的"分层组合",方便的"业务扩展"

2、程序观察
结论:我们学习面向对象编程主要学习什么?
主要是学习面向对象编程的原则、方法、技巧、模式、经验等。

3、从生活中的""转换到程序中的""
答:生活中很多东西都可以归为一个类。比如人:(男人、女人)

而软件中的类,是为了处理相关的数据。
比如学校:学号、姓名、性别、班级、电话、地址…
比如公司:编号、姓名、性别、部门、电话、地址、邮件...

静态属性:描述对象的基本特征信息(数据)(属性)
动态行为:描述这个对象能做什么,如何做?(方法)

类的基本概念:就是把一个事务中,我们所要关心特性和行为抽取出来,组合到一起,就称为一个类。

4、类的规范(组成)

访问修饰符 class 类的名称
{
  //字段部分
  //属性部分
  //方法部分
}

特别提示:一个类可以只有属性、只有方法、也可以属性、方法全部都有,但是不建议添加只有字段的类。

二、体验类与对象的使用

首先要清楚:类只是规定了,它能存储什么类型的数据、能够完成什么任务,但是没有具体的数据。

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

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

本身也是一种数据类型(自己定义的数据类型)

对象创建:以类为模板,给他赋值具体的数据。

特别的:使用new关键字,会将类调都内存中,从而以对象形式存在。
对象的属性:对象名.属性名=值;

对象的方法:对象名.方法名(参数…);

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

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

总结
【1】访问修饰符:默认是internal (内部的),只能在当前程序集内部使用这个类(类库、exe可启动项目);public:公共的,可以在程序集外面使用
【2】类的名:使用pascal命名法(首字母大写)。

三、属性(Property)
1、使用ILDasm反汇编工具发现getset其实是两个方法,并且每一个属性都有对应的私有字段

2、断点观察getset发现,当我们给属性赋值的时候其实是调用set方法给对应的私有字段赋值当读取属性值的时候其实是调用了get方法从对应的私有字段里面把值取出来

属性:本身其实并没有保存数据,数据是保存到属性对应的私有字段中。
属性作用:其实是外接访问对象数据的"入口"。像USB接口一样,数据保存到哪里?在存储芯片。

记住:属性是为了更好的实现需求的变化的扩展,从而让一个属性可以实现多样的需求!

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

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

3、属性的扩展

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

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

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

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

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

2】设置只读字段功能。

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

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

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

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

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

4、属性使用是必要的

测试:基于dgv数据显示,测试属性绑定的重要性。

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

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

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

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

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

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

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

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

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

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

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

7、对象类型的属性使用
总结:本身就是一种数据类型(引用类型),所以,类中的属性或者变量(成员变量、局 部变量)也可以是类类型(对象类型),开发中还会出现"集合对象"类型

例如:一个设备,对应一个传感器,属性就要用类类型。一个设备,对应多个传感器,属性就要用类类型数组。

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

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

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

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

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

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
QQ在线咨询
售前咨询热线
暂无
售后咨询热线
暂无
快速回复 返回顶部 返回列表