C sharp
类型
- 值类型:栈
- 引用类型:栈上为引用,堆上为实际值
- 指针类型:不安全模式下才使用
类型系统设计
- 值类型 继承自 System.ValueType,所有类型基类 System.Object
- int 是 System.int32 的别名
- struct
- public
- private
- internal: namespace 中可访问
- protected
- enum
- var vname = ... 自动识别类型
- 引用类型:
- object
- string
- dynamic:运行时检测类型
- class
- interface
- abstract class 与 interface 的区别
- abstract class 可以有成员字段,有实现的方法,class只能继承自一个abstract class
- interface 不能有成员字段,不能有实现的方法,class可以继承自多个interface
类型转换
- 大范围类型向小范围类型转换,需要显示转换,丢失精度
- 父类向子类转化,使用 parent as child,转换失败会返回 null 指针
- .ToString()
- Convert.ToInt32("199")
- Int32.TryParse("asdf", out intValue)
- IConventible: 值类型转到堆上,返回引用 object boxed = stackVal
- TypeConventer: 引用指向的值,存到栈上 int unboxed = (int)referenceObj
- int? 可为空的 int 类型 (Nullable)
集合类型
- array
- int[] numbers = new int[6];
- int[,] 2darray = new int[3, 3];
- int[][] vard = new int[5][];
- int[] numbers = new int[6];
- ArrayList
- List
- 强制使用一种类型,相较于ArrayList而言
- Hashtable
- key, value 类型不需要每个条目间一致
- Dictionary
- key, value 类型需要与指定模板中类型一致
- ConcurrentDictionary
- SortedList
- 根据 key 值排序
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!