首页 > 代码库 > 再说类和结构

再说类和结构

之所以分开说,是因为这次是由变量说起的,变量是存储在内存中的,内存的的数据是由0和1组成的,那么操作系统怎么才能区分这些数据呢,所以有了数据的类型。

我们定义变量的时候,一定会给变量定义类型的,否则系统就会报错。

如果是一个简单是数据类型的话,我们可以定义为数值型,字符型,布尔型等。这些简单数据是直接存储在一级缓存中的,读取很快的,而且由系统自动分配.

对于一些较复杂的变量,我们可以使用枚举,结构,和数组,当然这些变量你会发现他们是有规律的变量---都有共同的特性,比如枚举,他是有一定顺序的,所以他可以称为简单变量的集合------

所以结构就是有共同特性变量的集合(或者说是一个特性的集合,一个类型的集合),一个类型的结合,对!你又自己创造了一个类型,你就可以直接使用这个类型来定义性的变量,直接使用就可以。

(注意我们在红色标注字体中说的是较复杂的变量,这些变量有共同的一个特性,我们可以把它组合到一块)

现在我们继续深入了解变量,开头我说过变量需要在内存中存储的,那么这个较复杂的变量是怎么存储的呢,我们用到了栈,是操作系统中的栈,他是一个区域的内存我们给他叫做栈,这个栈存储的是一些共同特性的一些数据,我们对这些数据的操作是读取要求快,且不进行一些复杂的反复的操作。

 

上个例子

 

namespace Ch05Ex03{enum orientation: byte{north = 1,south = 2,east = 3,west = 4}struct route{public orientation direction;public double distance;}class Program{static void Main(string[] args){route myRoute;int myDirection = -1;double myDistance;Console.WriteLine("1) North\n2) South\n3) East\n4) West");do{Console.WriteLine("Select a direction:");myDirection = Convert.ToInt32(Console.ReadLine());}while ((myDirection < 1) || (myDirection > 4));Console.WriteLine("Input a distance:");myDistance = Convert.ToDouble(Console.ReadLine());myRoute.direction = (orientation)myDirection;myRoute.distance = myDistance;Console.WriteLine("myRoute specifies a direction of {0} and a " +"distance of {1}", myRoute.direction, myRoute.distance);Console.ReadKey();}}}

 

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

以上说的是简单的,或者有一些共同特性或者不经行复杂操作的一些变量,但肯定有一些变量我们要反复使用经行一些复杂操作(我见过一个把所有变量都设成类)我们引入操作更方便的类,对于一些复杂的变量MS也都使用的类,他把这些变量用类封装起来,供我们来反复使用(很方sha便gua的),这个是在二级缓存中的(有点疑问),存放的是地址,我们所使用的变量是对地址的操作,所以我实例化,用到NEW哦,所有的类都继承于System.Object,这个是操作系统的堆。

好吧接口也是这个定义的,因为他也要反复的使用,且比较复杂,(注意接口并没有继承任何东西)不再扩展了。。。。。。

 

再说类和结构