1.类型
1.1什么是类型
类型可以看成用来创建数据结构的模板,但模板本身不是数据结构.所以在定义类型以后,要使用必须先实例化.
1.2类型构成
类型有三部分组成:名称,数据结构,方法
1.3类型分类
c#中类型分两大类三小类.
第一大类:预定义类型,分两小类,
----------简单类型:数值类型,字符类型(char),布尔类型(bool)(注:数值不能自动转为bool)
----------非简单类型:字符数组(string),基类(object),dynamic
第二大类:自定义类型
c#提供了6中自定义类型,他们分别是:
----类类型(class); ----结构类型(struct); ----数组类型(array);
----枚举类型(enum); ----委托类型(delegate); ----接口类型(interface);
1.4类型的创建
类型创建格式:
<要创建的类型> <名称>
{类型成员声明;}
2数据存储
2.1栈
栈是一种内存数组,存储以下几种类型的数据:
----某些类型变量的值;
----程序当前执行环境;
---传递给方法的参数;
2.2堆
堆是用来存储某些类型的数据对象,有垃圾回收机制.
2.3数据存储
类型还可以分为值类型和引用类型,这两种类型的对象在内存中的存储方式不同.
-------------当类型不是其他类型的成员时:
----值类型:只需要一段单独的内存,用来存放数据------------存储在栈中
----引用类型:需要两段内存
----------第一段存储实际的数据--------------------------------------放在堆内
----------第二段是一个地址,指向数据存放在堆内的位置------放在栈内
------------当类型是某个类型的成员时:
---此时,作为其他类型成员的类型,无论是值类型还是引用类型,数据和地址放在<堆>内.
3变量
3.1变量分类
常见4中变量:
-----本地变量------------------在方法的作用域内保存临时数据,不是类型的成员
-----字段-------------------------保存类型或类型实例相关的数据,是类型成员
-----参数-----------------------向方法传递数据的临时变量,不是类型的成员
-----数组元素--------------------可以为本地变量也可以为类型成员
3.2 dynamic关键字
c#是静态语言,但很多脚本语言如Python都是动态语言,他们只有在程序运行时才确定变量的类型,c#在引用这些
语言所编写的程序集时就出现问题.dynamic就是为了解决这个问题的.
3.3可空类型
此类型和值的有效性相关,在处理数据库相关操作时,我们不知道该值是否有效,但普通的值类型都必须在栈内开辟空间
并存储值,可空类型解决此类问题.
网友评论