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. ...
随机推荐
- sharepoint REST API 获取文件夹及文件
使用REST操作文件夹: 获取文件夹 url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Shared Documents')/f ...
- JVM学习六:JVM之类加载器之双亲委派机制
前面我们知道类加载有系统自带的3种加载器,也有自定义的加载器,那么这些加载器之间的关系是什么,已经在加载类的时候,谁去加载呢?这节,我们将进行讲解. 一.双亲委派机制 JVM的ClassLoader采 ...
- WEB烟花效果——Canvas实现
摘要 本文主要介绍一种WEB形式的烟花(fireworks)效果(图1所示),该效果基于Canvas实现,巧妙地运用了canvas绘图的特性,并加入了物理力作用的模拟,使整体效果非常绚丽 ...
- vue-过渡动画
本篇资料参考于官方文档: http://cn.vuejs.org/guide/transitions.html 概述: Vue 在跳转页面时,提供多种不同方式的动画过渡效果. ●in-out:新元素先 ...
- hibernate框架学习笔记6:事务
MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...
- PTA的使用简介
PTA(Programming Teaching Assistant)是PAT(Programming Ability Test)的配套练习平台. 1.关于PAT PAT(Programming Ab ...
- C语言程序设计(基础)- 第7周作业(新)
要求一(25经验值) 完成PTA中题目集名为<usth-C语言基础-第七周作业>和<usth-C语言基础-12周PTA作业>中的所有题目. 注意1:<usth-C语言基础 ...
- 201421123042 《Java程序设计》第7周学习总结
1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件源 事件对象 事件监听器 事件适合配器 1.2 ...
- Django 分类标签查找
from django.conf.urls import url from django.contrib import admin from blog.views import index,stude ...
- GPUImage滤镜效果翻译
#import"GPUImageBrightnessFilter.h"//亮度 #import"GPUImageExposureFilter.h"//曝光 #i ...