数据类型及其存储分配 CSharp

本文详细介绍了.NET框架中的变量类型分类,包括引用类型与值类型的区分,如类、接口、委托、结构体及枚举等,并解释了它们在内存中的存储方式。

变量类型分类

  • …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所开辟的内存所在的内存编码的二进制

大概就这些吧想到在写。

如有错误,不吝指出,感谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值