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][];
  • ArrayList
  • List
    • 强制使用一种类型,相较于ArrayList而言
  • Hashtable
    • key, value 类型不需要每个条目间一致
  • Dictionary
    • key, value 类型需要与指定模板中类型一致
  • ConcurrentDictionary
  • SortedList
    • 根据 key 值排序

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!