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. ...
随机推荐
- 【Django】 视图层说明
[Django视图层] 视图层的主要工作是衔接HTTP请求,Python程序和HTML模板,使他们能够有机互相合作从模型层lou到数据并且反馈.说到视图层的工作就有以下几个方面要说 ■ URL映射 对 ...
- Algorithm --> 阶乘和因子
阶乘和因子 要求:输入正整数n(1<n <101), 把阶乘n!=1x2x3x...xn分解成素因子相乘的形式,从小到大输出各个素数(2,3,5,...)的指数. 例如825=3x52x1 ...
- Android中文API (110) —— CursorTreeAdapter
前言 本章内容是android.widget.CursorTreeAdapter,版本为Android 3.0 r1,翻译来自"深夜未眠",欢迎访问它的博客:"http: ...
- Python中的PYTHONPATH环境变量
PYTHONPATH是Python中一个重要的环境变量,用于在导入模块的时候搜索路径.可以通过如下方式访问: >>> import sys >>> sys.path ...
- 【Spring系列】Spring mvc整合druid
一.pom.xml中添加druid依赖 <!-- druid --> <dependency> <groupId>com.alibaba</groupId&g ...
- C语言的第二次作业
一.PTA实验作业 题目1. 计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.本题代码 #include<stdio.h> #include<math.h> int ...
- 团队项目7——团队冲刺(beta版本)
beta版本冲刺计划安排:http://www.cnblogs.com/ricardoCYF/p/8018413.html 12.06:http://www.cnblogs.com/ricardoCY ...
- python 使用Nginx和uWSGI来运行Python应用
参考:http://zmrenwu.com/post/20/ uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能.它支持WSGI协议,同时它也支持自有的uWSGI协议, ...
- Beta冲刺Day4
项目进展 李明皇 今天解决的进度 因服务器端未完成登录态维护,故无法进行前后端联动. 明天安排 前后端联动调试 林翔 今天解决的进度 因上课和实验室事务未完成登录态维护 明天安排 完成登录态维护 孙敏 ...
- 浏览器关闭后,Session会话结束了么?
今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了? 我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信息 ...