C#中从内存空间的角度看数据类型,并延申到static方法的分析

数据类型这篇文章主要讨论的是值类型和引用类型,值类型在定义的时候就会将该值存储在栈中,而引用类型是分配在堆中,在堆中存放的是数据区域地址,它用来指向一块内存空间。栈可以理解为存储的都是一些数据变量,而堆中放的都是一些实例化对象。在对值类型操作时不会影响其他值,而当引用变量引用其他引用变量时,由于引用的是数据地址,所以对该引用变量的操作会改变原引用变量。例如程序:

namespace STORE
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 0;
            int y = x;
            y = 100;
            SHU shu = new SHU();
            SHU shu1 = shu;
            shu1.a = 50;
            Console.WriteLine("{0},{1}",x,y);
            Console.WriteLine("原来引用类型shu的值为:{0}",shu.a);
            Console.WriteLine("后来引用类型shu1的值为:{0}", shu1.a);
        }
    }
    class SHU
    {
        public int a = 0;
    }
}

结果是
在这里插入图片描述
同样之前讨论过的类和对象中对于方法的调用也是一样,static定义的是静态变量,当被定义时,就已经在内存中分配了空间,而非静态变量可以理解为一个虚拟的空间,只有当被实例对象化之后,才能被产生出来,才能进行使用。

猜你喜欢

转载自blog.csdn.net/DOUBLE121PIG/article/details/84580013
今日推荐