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. ...
随机推荐
- poj-1218 THE DRUNK JAILER 喝醉的狱卒
自己去看看原题; 题目大意: 就是一个狱卒喝醉了,他第一趟吧所有的监狱都带开,第二趟把能把二整除的监狱关闭,第三趟操作能把三整除的监狱; 求最后能逃跑的罪犯数 输入第一个数是代表 测试数据组数 每个数 ...
- Matlab绘图基础——绘制三维表面
%绘制三维表面 ------------------------------------- %1.绘制线框图:mesh:每一条曲线称为mesh line %首先利用meshgrid函数产生平面区域内的 ...
- Java异常处理认识
什么是异常? 就是在编程过程中或者程序运行过程中出现的一些意外. 什么是异常处理? 就是提前编写程序处理可能发生的意外. 具体的过程是怎样的? 知己知彼方能百战百胜.Java中的异常是用对象来表示的, ...
- 文献管理工具的使用(Mendeley和Endnote)
以前是Mendeley的忠诚用户,但是最近在linux平台下出现的bug使我非常崩溃,之前辛辛苦苦整理的文献和分组,分分钟灰飞烟灭.所以希望能转用一个至少比较稳定的文献管理软件.刚好手头上有Mac版的 ...
- hadoop集群简单搭建
分布式搭建 在ubuntu下创建hadoop用户组和用户 bigdata@master:~$sudo addgroup hadoop bigdata@master:~$sudo adduser --i ...
- 乘法表(24.9.2017) (WARNING!!!!!!!!!!!)
#include "stdio.h" main() { int i,j,result; printf("\n"); ;i<;i++) { ;j<;j ...
- python的Flask 介绍
Flask 介绍 知识点 微框架.WSGI.模板引擎概念 使用 Flask 做 web 应用 模板的使用 根据 URL 返回特定网页 实验步骤 1. 什么是 Flask? Flask 是一个 web ...
- android批量打包
http://blog.csdn.net/johnny901114/article/details/48714849
- 从PRISM开始学WPF(六)MVVM(二)Command?
从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Module? ...
- nyoj 非洲小孩
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...