赵欢欢 廊坊师范学院信息技术提高班 第九期

我将数据分为两类,一类是值类型的,另一类是引用类型的。

值类型

因为对于值类型的数据,定义它的变量和它实际的值是放在一起的,应该都是存放在栈里。值类型的变量存放的数据量小,生产出它来,也不费劲,可以很快的销毁它。下次要使用时,大不了就再生产一个,反正也不费劲。所以,应该将他们存放在栈里。

比如说:int i =123;

引用类型

在我看来,除了值类型的数据不需要指针,其它类型数据都需要指针,,我管它们统一叫做引用类型的数据。假设它的类型为XXX,我定义一个XXX类型的变量c,初始值null。

XXX c=null

这时候c还没有值,但是即使c有了值,值也不存放在栈里,而是存放在其它地方。下面是c的不是null的情况。

由上可知,对于引用类型的数据,代表它的变量和实际的值是分开的。而c的作用就相当于一根绳子,我们可以通过它找到对象本身,因为c里存放的就是存有数据的对象的地址。其它c的作用就是指针,这和c++里的指针是一回事。因为c++不是面向对象的语言,没有类,接口等这些内容。c#在C++的基础上,加上了面向对象的概念,但它还是沿用了指针这种存储和使用数据的方式。

那么右边这个矩形代表的是什么区域呢,很多人肯定认为肯定是“堆区”,那可不一定?

情况一:数据放在堆区。

class类型,先定义这个类,才能使用:

class Dog{private string name;private string furcolor;}Dog dog=new Dog()

情况二:数据放在数据区(datasegment)。

string是具有值类型特点的特殊的引用类型。

string a="hello"

除了string类型,还有一种情况,就是用static定义的变量或方法,数据也是放在datasegment。

在这里多说一句,单例模式,就是因为将自己的成员变量和GetInstance()方法都声明为static类型,才能实现单例的效果。

情况三:数据放在代码区(codesegment)。

我只知道 方法应该是放在代码区里。

以上都是个人的理解,图片是我本人自己画的。希望能够对您有一点点的帮助。鉴于个人能力有限,错误之处,望指正。

海阔凭鱼跃,天高任鸟飞。我要加油,冲向我的理想。

赵欢欢 廊坊师范学院信息技术提高班 第九期

相关文章:

你感兴趣的文章:

标签云: