C#、TS和Dart对比4.1:类型概述

类型在编程开发语言中,占据核心位置,甚至可以简单的概况为:编程开发,就是在定义和使用类。无论是C#,还是TS或Dart,都有一个庞大的类型系统,包括核心的内置类、语言的预定义类库、框架的预定义类、第三方类库以及自定义类。通过对类型系统进行合理的划分,并针对每种类型,采取不一样的学习方式,将有利于掌握这个判定的知识体系。对于类型的划分,大体有两种方式:

 

一、技术型,从数据在内存中的存储和使用原理来划分:

1、值类型:

  • ①只需要一段内容,存储实际数据;
  • ②存储在栈中,效率更高;
  • ③根据不同的值类型,分配不同的内存大小;
  • ④值类型一般包括数值、布尔、字符。

2、引用类型:

  • ①需要两段内存,一段在堆中,存储实际数据,一段在栈中,存储内存地址,这个地址指向数据在堆中存放的位置,称之为引用;
  • ②引用类型存放在堆中的实际数据,也有值类型和引用类型。引用类型也是两段内存方式,但引用和实际数据都存储在堆里;
  • ③除了数据、布尔和字符三种值类型外,其它类型基本上都是引用类型,包括字符串,字符串可以认为是由字符组成的数组。

3、函数/方法的特殊之处:

  • ①函数也是引用类型,但定义时,堆中只存放了代码片断,并没有为参数和方法体中的变量分配内存空间;
  • ②只有在调用方法时,才分配内存空间给参数和变量,并在执行完方法后立即释放(闭包比较特殊,后面再说)。

4、总结:

  • ①原理性的东西,点到为止,有兴趣可以自行深入。掌握原理,对一些类型使用的理解,会很有帮助
  • ②暂时不理解也没关系,不影响学习和开发。日后,随着基础越来越扎实,难点会被顺其自然的突破

 

二、实用型,从应用开发的实际出发来划分,也是学习的建议方式:

1、基本类型:

  • 数值
  • 布尔
  • 字符/字符串

2、集合类型:

  • 列表类集合
  • 键值对类集合

3、特殊类型:

  • C#的object/dynamic/type*
  • TS的null/undefined/any/void/never/Symbol/object/function
  • Dart的object/dynamic/Function/Symbol

4、自定义类型:

  • 枚举-C#/TS/Dart
  • 类-C#/TS/Dart
  • 接口-C#/TS/Dart
  • 泛型-C#/TS/Dart
  • 结构体-C#
  • 委托-C#(本质是一种自定义类,但建议放到方法里,更易理解)
  • 类型别名-TS

5、常用预定义类库:

  • 日期
  • 数学
  • 正则
  • JSON
  • 迭代集合
  • 文件操作
  • Web请求

6、总结:

  • 基本类型、集合类型和特殊类型,是开发语言的核心,一般都内置在核心库里,需要全部熟练掌握。
  • 自定义类型,是我们在应用开发过程中,根据业务需求定义的类型,为什么说面向对象适合开发大型应用,理由就在于此,对于如何自定义和使用类,应该要熟练掌握。
  • 常用预定义类库,是由语言本身,在基本类型/集合类型/特殊类型的基础上,为我们扩展定义的工具类库,能够有效提升我们的开发效率,也是应该掌握的
  • 开发框架(如AspNetCore)提供的类库,以及第三方类库,可以在具体使用某个框架时,查阅文档掌握

 

posted @ 2023-01-12 13:36  functionMC  阅读(210)  评论(0编辑  收藏  举报