数组列表和数组有什么区别?
- 数组即
Array
类,数组列表即ArrayList
类,两者非常相似,不过Array
类在System
命名空间下,ArrayList
类在System.Collections
命名空间下。 - 数组在初始化时需要指定容量,并且指定后无法变更。而数组列表可以动态地改变容量,类似于
StringBuilder
类。
栈集合和队列集合有什么区别?
解答
- 栈集合和队列集合都是
System.Collections
命名空间下的集合类型。 - 栈集合类似于仅包含一个入口的容器,最先放进去的内容最后被取出,而最后放进去的内容最先被取出。
- 队列集合类似于两端分别为入口和出口的容器,最先进去的内容最先被取出,最后进去的内容最后被取出。
分析
- 大多数集合类型位于
System.Collections
命名空间下,除了ArrayList
和Stack
类,Queue
类也比较常用。 -
Slack
类也被称为栈集合类型,Queue
类也被称为栈队列集合类型。 -
顾名思义,栈集合类型的子项保存方式为先入后出的方式,而队列集合类型则相反,子项保存为先入先出方式。
栈集合和队列集合的区别
泛型有什么优势?
- 泛型可以在程序代码的类型定义或方法定义中以占位符的形式表示数据类型,而该数据类型直到使用时才决定。
- 所以泛型中的类型参数允许在开发者不确定类型的情况下提供类型安全代码,使程序编写更具效率。
简述泛型约束的作用
解答
- 定义泛型时可使用where关键字约束列表,以限制泛型类型参数的可选范围,如果类型参数指定时超出约束的指定范围,则编译时将报错。
分析
- 泛型虽然给程序开发带来了很大的便利,提升了名序代码的编写效率,但也存在被滥用的可能。
- 例如,有的程序中某些泛型类的类型占位符只允许某个范围类型(如仅限制于值类型),而泛型默认情况下允许使用任何类型将其实例化。
- 使用泛型约束可以基本解决这种问题,泛型约束用于限制类型的可选范围,约束以where开头,多个约束可以用空格分隔后一起使用。