C#4.0图解教程(第三章)

类型由下面的元素定义:

1.名称

2.用于保存数据成员的数据结构

3.一些行为的约束

short类型

名称:short

结构:2Bytes

行为:16位整数

名称:int

结构:4Bytes

行为:32位整数

3.3实例化类型

  通过实例化类型而创建的对象被称为类型的对象或类型的实例。这两个术语可以互换

3.4数据成员和函数成员

像short、int 和龙称为简单类型。只能存储一个数据。

存储多个数据如数组(array)

成员类别

     有两种成员

    数据成员  保存了与找个类的对象或作为一个整体的类相关的数据

    函数成员  执行代码。函数成员定义类型的行为

3.5 预定义类型

11种数值类型

    不同长度的有符号和无符号整数类型

    浮点数类float和double

   一种称为decimal的高精度小数类型。与floating和double不同。decimal类型可以准确地表示分数。decimal类型常用于货币的计算

  一种Unicode字符类型char

一种布尔类型bool。bool类型表示布尔值并且必须为true或false中的一个

3种非简单类型

string  ,它是一个Unicode字符数组

object 它是所有其他类型的基类

dynamic 使用动态语言编写的程序集时使用

预定义补充

 所有定义的类型都直接映射到底层的.net类型

 在C#中尽量使用C#类型别名而不是.net类型别名

3.6用户定义类型

类类型(class)

结构类型(struct)

数组类型(array)

枚举类型(enum)

委托类型(delegate)

接口类型(interface)

类型通过类型声明创建,类型声明包含一下信息

要创建的类型的种类

新类型的名称

对类型中每个成员的声明(名称和规格)。array和delegate类型除外。它们不含有命令成员。

用户必须先声明一个类型,然后实例化该类型的对象

3.7栈zhan和堆dui

运行程序使用两个内存区域来存储数据:栈和堆

3.7.1

栈是一个内存数组,是一个LIFO(后进先出)的数据结构。栈存储几种类型的数据

 某些类型的变量值

程序当前执行的环境

传递给方法的参数

栈的特征

  数据项被压入栈顶并从栈顶弹出

   数据只能从栈的顶端插入和删除

   把数据放到栈顶称为入栈push

   从栈顶删除数据称为出栈pop

3.7.2堆

堆里的内存能够以任意顺序存入和移除

虽然程序可以在堆里保存数据,但并不能显式地删除它们CLR自动在判断出不被使用时,自动删除无主堆的对象。

3.8值类型和引用类型

类型被分为两种:值类型和引用类型

值类型只需要一段单独的内存。用于存储实际的数据

引用类型需要两段内存

   第一段存储实际的数据,它总是位于堆中

   第二段是一个引用,指向数据在堆中存放的位置

  对于值类型,数据存放在堆里。对于引用类型,实际数据存放在堆里而引用存放在堆里。

3.8.1存储引用类型和对象的成员

引用类型对象的数据部分始终存放在堆里

值类型对象,或引用类型数据的引用部分可以存放在堆里。也可以存放在栈里,这依然实际环境。

对于引用类型的任何对象,它所有的数据成员都存放在堆里,无论它们是值类型还是引用类型

原文地址:https://www.cnblogs.com/tangdacheng/p/2531510.html