C# 类型、存储和变量
如果广泛地描述C和C++程序的源代码的特征,可以说C程序是一组函数和数据类型,C++程序是一组函数和类,然而C#程序是一组类型声明。
既然C#程序就是一组类型声明,那么学习C#就是学习如何创建和使用类型。所以需要做的第一件事情就是了解什么是类型。
可以把类型想象成一个用来创建数据结构的模板,模板本身并不是什么数据结构,但它详细说明了由该模板构造的对象的特征。
类型由下面的元素定义:
. 名称
. 用于保存数据成员的数据结构
. 一些行为及约束条件
实例化类型
从某个类型模板创建实际的对象,称之为实例化该类型。
数据成员和函数成员
像short、int和long等这样的类型称之为简单类型,这种类型只能存储一个数据项。
其他类型可以存储多个数据项,比如数组(array)类型就可以存储多个同类型的数据项。这些数据项称为数组元素。
然而另外一些类型可以包含许多不同类型的数据项(类)。这些类型中的数据项个体称为成员,并且与数组中使用数字类引用成员不同,这些成员有独特的名称。
有两种成员:数据成员和函数成员。
. 数据成员 保存了与这个类的对象或作为一个整体的类相关的数据。
. 函数成员 执行代码。函数成员定义类型的行为
预定义类型
C#提供了16种预定义类型。
如图
需要注意的是:
bool类型表示布尔值并且必须为true或false.
decimal是高精度小数类型,与float和double不同,decimal类型可以准确地表示分数,decimal类型常用语货币的计算。
非简单类型
object::所有其他类型的基类,包括简单类型
string::0个或多个Unicode字符所组成的序列
dynamic::在使用动态语言编写的程序集时使用。
用户定义类型
1:类类型(class);
2: 结构类型(struct)
3:数组类型(array)
4:枚举类型(enum)
5:委托类型(delegate)
6:接口类型(interface)
一旦声明了类型就可以创建和使用这种类型的对象,就像他们是预定义类型一样。
例如:
预定义类型: int a;
float b;
用户自定义类型:
堆和栈
程序运行的时候,他它数据必须存储在内存中,一个数据项需要多大的内存,存储在什么地方以及如何存储都依赖于该数据的类型。
运行中的程序使用两个内存区域来存储数据:栈和堆
栈:
栈是一个内存数组,是一个后进先出的数据结构,栈存储几种类型的数据:
1:某种类型变量的值
2:程序当前的执行环境
3:传递给方法的参数
栈的特征:
.1 数据只能从栈的顶端插入和删除、
.2 把数据放到栈顶称为入栈
.3 从栈顶删除数据称为出栈
堆
堆是一块内存区域,在堆里可以分配大块的内存用于存储某种类型的数据对象,与栈不同,堆里的内存能够任意顺序存入和删除。
虽然程序可以在堆里保存数据,但并不能显示地删除它们。CLR的自动GC(Carbage collector,垃圾收集器)在判断出程序的代码将不会再访问某种数据项的时候,自动清除无主的堆对象。
如下图所示
变量
这里不再多介绍了。
如有雷同,请联系我。
C# 类型、存储和变量的更多相关文章
- C#_02.12_基础二_.NET类型存储和变量
C#_02.12_基础二_.NET类型存储和变量 一.核心一句:C#程序是一组类型声明(留待后面慢慢体会,现在不是很理解,不强说了) 二.数据类型: 1.预定义了16种数据类型: 其中13种简单数据类 ...
- 【卷土重来之C#学习笔记】(三) 类型 存储和变量
.c#程序是一组类型声明 ※C#程序或DLL的源代码是一组一种或多种类型声明 ※对于可执行程序,类型声明必须有一个包含Main方法类 ※命名空间是一种把相关的类型声明分组并命名的方法.既然程序是一组相 ...
- C# 图解教程 第三章 类型、存储和变量
类型.存储和变量 C#程序是一组类型声明类型是一种模板实例化类型数据成员和函数成员预定义类类型用户定义类型栈和堆 栈堆 值类型和引用类型 存储引用类型对象的成员C#类型的分类 变量静态类型和dynam ...
- Swift中的类型属性(静态变量)
http://blog.haohtml.com/archives/15098 Swift中的类型属性(静态变量) Posted on 2014/06/13 类型属性语法 在 C 或 Objective ...
- LR静态存储/动态存储/指针变量脚本说明
在一次教程学习中,看到该知识点并记录了下来,希望与大家共同探讨学习. 一.静态存储与动态存储 静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束.动态存储变量是在程序执行过 ...
- golang中基本类型存储大小和转换
Go语言的基本类型有: bool string int.int8.int16.int32.int64 uint.uint8.uint16.uint32.uint64.uintptr byte // u ...
- zendstudio 声明变量类型,让变量自动方法提示
zendstudio 行内注释, 显式声明变量类型,让变量自动方法提示 $out = []; /* @var $row \xxyy\SizeEntity */ foreach ($rows[ 'lis ...
- C语言基础学习基本数据类型-int类型与int变量
int类型与int变量 针对不同的用途,C语言提供了多种整数类型.各种整数类型的区别在于所提供数值的范围,以及数值是否可以取负值. 在之前的实例中你已经看到过,int关键字用于声明整型变量. int类 ...
- 怎样的操作才能让HashMap以红黑树类型存储数据? (文中没有解答该问题)
怎样才能让HashMap以红黑树类型存储数据? 看上面的代码可知:如果一个Node的长度大于等于7.就会触发Node转TreeNode的操作. 我向一个map中插入了一百万条数据(插入一亿条时,内存溢 ...
- mvc 使用预置队列类型存储异常对象
using PaiXie.Utils; using System; using System.Collections.Generic; using System.Linq; using System. ...
随机推荐
- spring boot jsp页面
相关内容访问: http://www.cnblogs.com/zj0208/p/5985698.html
- NodeJS定时任务
在实际开发项目中,会遇到很多定时任务的工作.比如:定时导出某些数据.定时发送消息或邮件给用户.定时备份什么类型的文件等等 一般可以写个定时器,来完成相应的需求,在node.js中自已实现也非常容易,接 ...
- 智齿客服网页端接入文档V2.3
产品介绍 智齿客服网页端接入提供以下两种部署方式. 一.网页组件(推荐) 通过智齿客服网站咨询组件,企业的用户可快捷联系到企业客服获取帮助.智齿客服网页组件提供强大的用户行为采集能力和系统对接能力,支 ...
- 斑马ZPL指令加入如换行、回车等控制符的方法
在程序中可能会被过滤掉,直接在指令中加入ASCII对应的16进制字符即可解决改问题, 语法:_十六进制(ASCII) 栗子:hello_0D_0Aworld 换行 扫描结果: hello world
- React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(二)
上一篇杂七杂八说了下express部分的,现在开始进入正题. 接下去的顺序,就是项目从零开始的顺序(思路方向). [actions定义] 如图,目录页,有4部分的内容,所以以下几个actions是需要 ...
- Bean validation
公司测试非常严格,要求我们对每个参数的长度进行校验,提了一个参数长度校验的单,然后我们老大就把我们的代码全部打回去了.... 一个bean类中往往有超多变量,如果一个个写if else,够呛,而且圈复 ...
- 游戏安全有多重要?——GAME-TECH游戏开发者技术沙龙
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云+社区运营团队发布在腾讯云+社区 腾讯云GAME-TECH沙龙继3月深圳站后,将于4月13日来到北京站,与游戏厂商和游戏开发者,畅聊 ...
- Bate敏捷冲刺每日报告--day2
1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285) Git链接:https://github.com/WHUSE2017/C-team 2 ...
- python中使用flask时遇到的markupsafe._compat包缺失的问题与解决
环境:windows7 + python3.6.0 在尝试使用python的flask时,按照flask的tutorial操作,装好flask.venv后,对tutorial中的hello.py进行运 ...
- 201621123031 《Java程序设计》第6周学习总结
作业06-接口.内部类 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多 ...