变量类型分类
-
…Object
-
引用类型 值类型
-
类 接口 委托 结构体 枚举
类class:Object string , Form, Console等
接口interface
委托delegate
结构体struct:int(Int32)float(Single)等
枚举:horizontalAlignment , Visibility等
至于 float int 为什么是结构体类型的 , 具体可以转到其定义下查看
(下图中以 ’I‘ 开头的就是接口,通常接口都是以 ‘I’ 开头)

这就是float 和 int 的定义。至于名字为什么不一样,是因为这这几种类型过于常用,微软将他们简化了,当然使用原名称也不会报错一样
值类型存储方式
首先我们要知道一个基本感念,在存储器中,数据和程序都是以二进制形式存放的,一个二进制代码称为一位,而八位为一个字节。
常见的几种数据类型的字节长度分别是:
还是直接把官方文档搬来吧

- 小提示:以 ‘ s ’ 代表带符号的类型
- 举例 int 类型在内存中的存储
int a=2 ;
首先 数据存储在堆栈内存中找一块没有被占用的内存,申请空间,然后存储时从高位向低位存储(二进制排列顺序, 没有数据的以零补齐.
int是四个字节32位所以在内存中申请了四行(下表所示)
2的二进制是 10 所以存储形式如下表格

当存储负数的时候存储规则和上述基本相同,不过存储的二进制要发生改变,要 1- > 0 , 0->1 (补码,再转过来叫反码,讲错当我没说…)
引用类型储存方式
当声明如下Student 类时
Student stu;
即在堆栈内存中申请 4 个字节的空间以来存储 stu 指向堆空间的地址,因为还没有指向的空间,所以内存中存储的二进制都为零,如下

当写下如下语句时
stu=new Student();
就在堆内存中申请Student类所需占用的空间
而stu内存就存入stu所开辟的内存所在的内存编码的二进制
大概就这些吧想到在写。
如有错误,不吝指出,感谢
本文详细介绍了.NET框架中的变量类型分类,包括引用类型与值类型的区分,如类、接口、委托、结构体及枚举等,并解释了它们在内存中的存储方式。
648

被折叠的 条评论
为什么被折叠?



