2020-03-07

拆装箱

装箱box
值类型隐式转换为object类型的过程内部机制:
1.在堆中开辟内存空间
2.将值类型的数据复制到堆中
3.返回堆中新分配对象的地址
拆箱unbox
从object类型到值类型的显示转换内部机制:
1.判断给定类型是否是装箱时的类型
2.返回以装箱实例中属于原值类型字段的地址是将存储在堆上的引用类型值类型并给值类型变量

内存格局

内存格局通常分为4个区
全局数据区:存放静态数据常量
代码区:存放所有的程序代码
栈区:存放为运行而分配的局部变量,参数,返回数据,返回地址等
堆区:即自由存储区

字符串具有不可变性

字符串常量一旦进入内存就不得再次改变,因为如果在原位置改变会使其他对象内存被破坏,导致内存泄露,当遇到字符串变量引用新值时,会在内存中新建一个字符串,将该字符串地址交由该变量引用

标题枚举

列举某种数据的所有取值

类和对象

什么是类,什么是对象
面向对象;一种软件开发的思想,指导程序员如何分析解决问题
对象的类的具体实例,即归属于某个类别的个体
名词类型的共性,作为数据成员
动词类型的共性,作为方法成员

创建类

语法;
访问级别class类名

类成员……
}通常每个类都在一个独立的C#源文件中创建新的类意味着在当前项目中产生了一种新的数据类型# 创建对象
语法;
类名引用名 引用名=new构造函数(参数列表)创建对象的过程中也称为“实例化”

访问修饰符

用于修饰类及类成员的访问可见范围public:所属类的成员以及非所属类的成员都可以访问private:只有所属类的成员才能访问[类成员的默认级]

属性

对字段起保护作用可实现只读只写功能
本质就是对字段的读取与写入方法
自动属性
当属性访问器中不需要任何其他逻辑时,使用自动属性可以更加简洁
本质就是一个字段两个方法。

构造函数

提供了创建对象的方式,初始化类数据成员的特殊方法
特点
与类同名
没有返回值,也不能写void
不能被直接调用,必须通过new运算符在创建对象时才会自动调用
每个类都必须至少有一个构造函数,若不提供,编译器自动生成一个无参构造函数
如果程序员定义了构造函数,则编译器不会再提供 this关键词
表示当前对象的引用

类结构

方法:向类的外部提供某种功能

static

静态成员变量
特点:存在优先于对象,被所有对象所共享,常驻内存

静态方法

通过引用调用实例方法时,会掩饰的传递对象的引用,以便在方法内部可以正确访问该对象成员变量通过类名调用静态方法时,因为没有具体对象,所以在static方法中不能访问实例成员

静态类

不能实例化,只能包含静态成员
静态类不能被继承
适用性
适用场合:
1.所有对象需要共享的数据
2.在没有对象前就要访问成员
3.工具类适合做静态类(常用,不需要过多数据)

结构

什么是结构
结构struct
定义与类语法相似用于封装小型相关变量的值类型都可以包含数据成员和方法成员,但结构属于值类型,类属于引用类型

定义结构体

使用struct关键字定义
结构不能继承,但可以实现接口

构造函数

结构总会包含无参数构造函数
构造函数中必须初始化所有字段
当使用new运算符创建一个strut对象时,它将调用相应的构造函数
与类不同,可以在不使用new运算符的情况下实例化结构体

类与结构体的区别

类的对象是存储在堆空间中,结构存储在栈中推空间大,但访问速度较慢
栈空间小,访问速度相对更快
结构是值类型,它在栈中分配空间而类是引用类型,它在堆中分配空间,栈中保存的只是引用结构类型直接存储成员数据

结构和类适用场合分析

1.当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一点
2.对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下使用结构的成本较低
3.在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承
4.大多数情况下结构类型只是含有一些数据或者以数据为主

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值