【卷土重来之C#学习笔记】(三) 类型 存储和变量
.c#程序是一组类型声明
※C#程序或DLL的源代码是一组一种或多种类型声明
※对于可执行程序,类型声明必须有一个包含Main方法类
※命名空间是一种把相关的类型声明分组并命名的方法。既然程序是一组相关的类型声明,那么通常会把程序声明在你创建的命名空间内部。
2.类型是一种模板
既然c#程序是一组类型声明,那么学习C#就是学习如何创建和使用类型
※类型定义:想象成一个用来创建数据结构的模板
※类型有下面的元素定义:
【1】名称:
【2】用于保存数据成员的数据结构
【3】一些行为及约束条件
例如下面是Short类型和INT类型的组成元素
3.实例化类型
从某个类型模板创建实际的对象称为实例化类型。
※ 通过实例化类型而创建的对象被称为类型的对象或类型的实例
※ 再C#中每个数据项都是某种类型的实例
4.数据成员和函数成员
数据成员:保存了这个类的对象或作为一个整体的类相关的数据
函数成员:执行代码,定义类型的行为
一下为XYZ的两个数据成员和两个函数成员
5.预定义类型
c#提供了16种预定义类型(13种简单类型和3种非简单类型)
※ 所有的预定义类型名称为全小写的字母组成
※ 预定义类型的取值范围和对应.NET类型
6.用户自定义类型
以下6种类型可以用户自己创建
※ 类(class)
※ 结构 (struct)
※ 数组(array)
※ 枚举 (enum)
※ 委托 (delegate)
※ 接口 (interface)
类型通过类型声明创建(一单声明了类型就可以创建和使用这种类型的对象,就像他们是预定义类型一样)
使用用户定义类型两步过程:必须先声明类型,然后实例化该类型的对象。
7.栈和堆
运行程序使用两个内存区域来存储数据:栈和堆
栈:内存数组 是一个LIFO(Last in First out ,后进先出)的数据结构
存储以下类型数据:
※ 某些类型变量的值
※ 程序当前的执行环境
※传递给方法的参数
特征:
※ 数据只能从栈的订单插入和删除
※把数据放到栈顶称为入栈(push)
※从栈顶删除数据称为出栈(pop)
堆:一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象,与栈不同,堆的内存能够以任意顺序存入和移除
不能显示得删除他们,CLR的垃圾收集器会判断出程序的代码将不会再访问某数据项时,自动清除堆对象。
8.值类型和引用类型
数据项的类型定义了存储数据需要的内存大小及组成该类型的数据成员,类型还决定了对象在内存中的存储位置---栈和堆
类型被分为两类:值类型和引用类型
值类型:只需要一段单独的内存,用于存储实际的数据
引用类型:需要两段内存
第一段存储实际的数据,它总是位于堆中。
第二段是一个引用,指向数据在堆中存放的位置
以下为存储示意图:
※引用类型对象的数据部分始终存放在堆里
※值类型的对象或引用类型数据的引用部分可以放在堆里也可以放在栈里
9.变量
变量:是一个名称,标识程序执行时存储在内存中的数据
※本地变量:在方法的作用域保存临时数据,不是类型成员
※字段:保存和类型或类型实例相关的数据,是类型的成员
※参数:用于从一个方法到另一个方法传递数据的临时变量,不是类型成员
※数组元素:(通常)同类数据项构成的有序集合的一个成员,可以为本地变量也可以为类型成员
变量的声明:
※给变量命名,并为它关联一种类型;
※让编译器为它分配一块内存
※一个简单的声明 至少需要一个类型和一个名称 例:int var2 //无初始化语句的本地变量,在未赋值前不能使用
※变量初始化: 例:int var2 = 16;
※多变量声明: int var3=7,var4, var5=10; //多变量声明必须类型相同
【卷土重来之C#学习笔记】(三) 类型 存储和变量的更多相关文章
- python学习笔记三:函数及变量作用域
一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encod ...
- 【卷土重来之C#学习笔记】(一)c#文章导航目录
[卷土重来之C#学习笔记](一)c#文章导航目录 [卷土重来之C#学习笔记](二)c#编程概述 [卷土重来之C#学习笔记](三)类型.存储.对象 [卷土重来之C#学习笔记](四)类的基本概念 [卷土重 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- Liunx学习笔记(三) 文件权限
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
- python3.4学习笔记(二) 类型判断,异常处理,终止程序
python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...
随机推荐
- openstack组件服务的入口寻找方法
在centos7系统上,安装openstack服务以后,可以通过以下命令,查找到该系统上,已经安装的openstack服务 [root@xzto01n010027244133 ~]# systemct ...
- J2EE 的体系结构
J2EE 即Java2平台企业版,它提供了基于组件的方式来设计.开发.组装和部署企业应用.J2EE使用多层分布式的应用模型,这个多层通常通过三层或四层来实现: 1.客户层,运行在客户计算机上的组件. ...
- 老男孩Day10作业:主机管理程序
一.作业需求: 1, 运行程序列出主机组或者主机列表 2,选择指定主机或主机组 3,选择主机或主机组传送文件(上传/下载) 4,充分使用多线程或多进程 5,不同主机的用户名,密码,端口可以不同 6,可 ...
- 【python】10分钟教你用Python做个打飞机小游戏超详细教程
更多精彩尽在微信公众号[程序猿声] 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类clas ...
- django bug 与陷阱
环境:ubuntu,python3.4 1.QueryDict 陷阱 :以下语句语句是取每行的头元素,其中line应该是一个列表.问题是,line在实际运行中已经不是列表,而变成了列表中的头元素. 错 ...
- 消息队列 简单demo
可以使用Windows自带计划任务执行Receive操作. 控制面板=>管理工具 计划任务 =>创建计划任务 step : http://www.2cto.com/kf/201402/27 ...
- 洛谷 P2286 [HNOI2004]宠物收养场
题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...
- OEL6.8安装虚拟带库模拟器
最近在虚拟机下搭建了一个OSB备份环境,其中使用到了虚拟带库,以下是虚拟带库的配置过程,简要记录之. 1.下载虚拟带库的源码(mhvtl-2016-03-10.tgz). 2.解压缩源码. # cd ...
- 动态规划算法解析网页中的内容 JavaScript
function getInfo(html){ //去掉注释 html=html.replace(/<!--.+?-->/g,"") var arrP=[] var r ...
- opatch on-line patch and standby-fisrt patch
opatch on-line patch and standby-fisrt patch on-line patch 有缺陷,不建议使用,standby-fisrt patch 可以考虑使用 #### ...