解释:
①:C#程序或DLL的源代码是一组一种或多种类型的声明
②:对于可执行的程序,类型声明必须包含有Main方法的类
③:命名空间是一种把相关的类型声明分组并命名的方法,既然程序是一组相关的类型声明
④:既然C#程序就是一组类型声明,那么学习C#就是学习如何穿件和使用类型
定义:类型是用来创建数据结构的模板,模板本身并不是数据结构,但它详细说明了由该模板构造的对象的特征
类型由下面的元素定义:
①:名称;②:用于保存数据成员的数据结构; ③:一些行为及约束条件
如下图模板所示,以 Int 类型为例
定义:从类型模板创建实际对象,称为实例化类型
PS:C#程序中,每个数据项都是某类型的实例。类型可以是语言自带的、BCL或其它库提供的,或是程序员定义的
定义:
①:数据成员:保存了与这个类的对象或作为一个整体的类相关的数据
②:函数成员:执行代码。 函数成员定义类型的行为
定义:C#提供16种语定义类型,所有的预定义类型的名称全部小写字母组成
附图
所有的预定义类型都直接映射到低层的.Net类型。
C#的类型名称就是.Net类型的别名
除了C#提供的16种预定义类型,还可以创建自己的用户定义类型
如:
类型通过类型声明创建,类型声明包含以下信息
用户预定义类型需要先声明类型,然后才可实例化该类型对象
定义:程序运行时,他的数据必须存储在内存中。一个数据需要多大内存,存储在什么地方,以及如何存储都依赖于该数据项的类型。
运行中程序使用两个内存区域来存储数据:栈和堆
①:栈
定义:栈是一个LIFO(Last-In First-Out,后进先出)的内存数组。
栈存储以下几种类型数据
栈的特征:
如图所示:
②:堆
定义:在堆里可以分配大块内存来存储某类型的数据对象。
与栈不同,堆里的内存能以任意顺序存入或移除。
CLR的自动GC(Garbage Collector,垃圾收集器)在判断出程序将不会再访问某数据时,自动清除无主的堆对象
PS:对于堆和栈更深层次学习,前往学习《计算机组成原理》课程 =》推荐学习《深入理解计算机系统》(经典黑书)
定义:数据项的类型定义了存储数据需要的内存大小及组成该类型的数据成员,类型决定了对象在内存中存储的位置--堆或栈
类型被分为两种:值类型和引用类型(两者的区别在于数据在内存中存储的位置不同)
①:值类型
值类型只需要一段单独的内存,用于存储实际的数据
②:引用类型
引用类型需要两段内存,用于存储实际的数据
如图所示两者之间的区别
如果数据是另一个对象的成员,那么它的存储会有些不同
class Demo{ public int value }
实际存放内存地址
定义:变量是一个名称,表示程序执行时存储在内存中的数据
变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够存入变量。
变量允许程序存取数据
C#所提供的四种变量
变量的简单声明
int demo = 10; //int表示变量类型,demo标识符表示变量名,10表示赋予该变量的初始化值
int demo; //未赋予初始值,系统默认赋予0
//多变量声明
int demo1,demo2;
demo1 = 100;
demo2 - 100;
定义:
①:静态类型:每个变量都有变量类型,这样编译器就可以确定运行时需要的内存总量以及哪些部分应该存在栈上,哪些存在堆上。变量类型在编译时就确定且不能在运行时修改,这叫静态类型。
dynamic代表一个特定的、实际的C#类型,它知道如何在运行时解析自身。
某些情况下,特别是使用数据库时,你希望表示变量目前未保存有效的值(数据库中的Null).
对于引用类型,你可以直接把变量设置为null,但值类型不行。
可空类型允许创建可以标记为有效或无效的值类型
如下图:
int? i =100; double? d1 =2.28; DateTime? time = DateTime.Now()
原文:https://www.cnblogs.com/FrameCode/p/14930669.html