D语言和C#,java类似,是一门区分值类型和引用类型的语言。
概念和区分:
(注:没有找到权威的定义,维基百科没有,只有勉强链接到百度百科了)
- 值类型:百度百科 , 说下个人理解:默认在栈中分配的,传递时默认(自定义赋值函数可以做其他实现)是占用的内存的copy的。
- 引用类型:百度百科 ,说下个人理解:默认在堆中分配,使用的时候都是其引用,也就是其指针。所谓的赋值也就是引用(指针)更新。
D中的分类:
(注:非官方分类,个人区分,如有错误请指出)
值类型:
- 基础类型:字符类型([u]byte,[d/w]char),数字类型([u]short,[u]int,[u]long,[u]cent,[i/c]float,[i/c]double,[i/c]real,),布尔类型(bool),空类型(void)
- 结构
- 指针(引用本质也可以理解为指针)
- 静态数组
- function 和 delegate
引用类型:
- 类和接口
- 动态数组(不单单一个元素指针,还有长度)