黑马程序员---类型、存储和变量

-> C#是一组类型声明
1、C#程序和DLL的源代码是一组一种或多种类型声明。
2、对于可执行程序,类型声明中必须有一个包含Main方法的类。
3、命名空间是一种把相关类型声明分组并命名的方法
-> 类型是一种模板
类型由下面的元素定义:
1、名称
2、用于保存数据成员的数据结构
3、一些行为及约束条件
-> 实例化类型
从某个类型模板创建实际的对象,称为实例化该类型
通过实例化类型而创建的对象被称为类型的对象或类型的实例。
-> 数据成员和函数成员
数据成员:保存了与这个类的对象或作为一个整体的类相关的数据
函数成员:执行代码。函数成员定义类型的行为
-> 预定义类型:
共16种,其中13种简单类型,3种非简单类型(string、object、dynamic)
-> 用户定义类型:
共6种:类、结构、数组、枚举、委托、接口
类型通过类型声明创建,类型声明包含一下信息:
1、要创建的类型的种类
2、新类型的名称
3、对类型中每个成员的声明(名称和规格)。数组和委托除外,他们不含有命名成员
-> 栈和堆
程序运行时,它的数据必须存储在内存中。一个数据项需要多大的内存、存储在什么地方、以及如何存储都依赖于该数据项的类型。
-> 栈:
栈是一个内存数组,是一个LIFO(last-in first-out)的数据结构。
栈存储几种类型的数据:
1、某些类型变量的值
2、程序当前的执行环境
3、传递给方法的参数
栈的特征:
1、数据只能从栈的顶端插入和删除
2、把数据放到栈顶称为入栈
3、从栈顶删除数据称为出栈
-> 堆:
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象
堆的特征:
1、堆里的内存能够以任意顺序存入和移除
2、虽然程序可以在堆里保存数据,但并不能显式地删除他们。
  CLR的自动GC在判断出程序的代码将不会再访问某数据项时,自动清除无主的堆对象。
-> 值类型和引用类型:
数据项的类型定义了存储数据需要的内存大小以及组成该类型的数据成员。
类型还决定了对象在内存中的存储位置 - 栈和堆
-> 存储引用类型对象的成员:
1、引用类型对象的数据部分始终存放在堆里
2、值类型对象或引用类型数据的引用部分可以存放在堆里,也可以存放在栈里。
如:一个引用类型的实例,它有一个值类型成员和一个引用类型成员。
对于一个引用类型,其实例的数据部分始终存放在堆里。既然两个成员都是对象数据的一部分,那么它们都会被存放在堆里。栈中存放的是实例的引用
对于一个引用类型的任何对象,他所有的数据成员都存放在堆里,无论他们是值类型还是引用类型。
-> 变量:
变量是一个名称,表示程序执行时存储在内存中的数据
共4种变量:
1、本地变量
2、字段
3、参数
4、数组元素
-> 变量声明:
-> 变量在使用之前必须声明。变量声明定义了变量,并完成两件事:
1、给变量命名,并为它关联一种类型
2、让编译器为它分配一块内存
-> 1、变量初始化语句 int i = 1;
-> 2、自动初始化
-> 多重变量声明
-> 使用变量的值
-> 静态类型和dynamic关键字
静态类型:变量的类型在变异的时候确定并且不能在运行时修改。
可空类型:允许穿件可以标记为有效或无效的值类型,这样就可以在使用它之前确定值的有效性。普通的值类型称为非可空类型
-> 用处:
使用数据库的时候,希望表示变量目前为保存有效的值。对于引用类型,可以把变量设置为null。但定义值类型的变量时,不管其内容是否有有效的意义,其内存都会进行分配
-> 创建可空类型:
可空类型总是基于另外一个已声明类型,这个类型称为顶层类型。
1、可以从值类型创建可空类型
2、不能从引用类型创建可空类型
3、只需声明可空类型的变量即可
可空类型的使用: int? i = 1;
1、和任何变量一样,要获取值,只需要使用其名字,但必须保证变量不是null,若读取null变量的值将会产生异常。
2、要检查可空类型是否包含值,只需要和null比较
3、非可空类型可以隐式转换为可空类型
4、可空类型和非可空类型之间存在显示转换关系
-> 为可空类型赋值
可以为可空类型的变量赋3种类型的值:
1、其底层类型的值
2、相同可空类型的值
3、null值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值