C#变量&内存篇

本文详细探讨了C#中值类型变量和引用类型变量的内存分配和存储方式。值类型直接存储在内存中,而引用类型存储的是实例的地址。通过对short和ushort类型的分析,解释了值类型的存储规则。接着,通过代码示例说明引用类型变量仅存储实例的首地址,并阐述了栈内存和堆内存的区别。文章还提到了装箱和拆箱的概念及其对性能的影响。
摘要由CSDN通过智能技术生成

值类型变量

以(值类型)short/ushort为例
系统自动搜寻可用的内存,并根据数据类型划分变量范围。
ushort:

class Program
{
   
   static void Main(string[] args)
   {
   
   		ushort us;
   		us=1000;
   }
}

分析:1000为10进制,折成2进制为1111101000(10位),因为ushort是16bit(16位),所以不满的位数要用0来补齐,即0000001111101000。而高8位(00000011)要存储在内存的较高地址上(因为最高位一定是符号位)。比如:系统给ushort类型的变量(us)分配的内存地址为10000012和10000013(因为内存以字节(B)为基本单位,而不是bit,即:一个地址只对应8bit内存空间),则高8位存储在10000013的内存中。【高高低低原则】
short:

class Program
{
   
	static void Main(string[] args)
	{
   
		short us;
		us=-1000;
	}
}

分析:与ushort类似,只不过需要注意的是,存储的1000和存储-1000,在内存上的不同为:将-1000按1000存入后,按位取反再+1。

可以对上述内容进行验证,检验是否为“按位取反再+1”,方法如下:

class Program
    {
   
        static void Main(string[] args)
        {
   
            short us;
            us = -1000;
            string str = Convert.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值