VB.NET 学习笔记(十九):数组、集合、泛型
在 VB.NET 中,数组、集合和泛型是处理数据集合的重要工具。它们分别提供了不同的数据存储和操作方式,能够帮助开发者高效地管理数据。
一、数组(Array)
数组是一个固定大小的数据集合,其中的元素类型相同。数组是处理多个数据项的常见方式。
1. 创建数组
在 VB.NET 中,可以通过以下两种方式创建数组:
- 声明并初始化数组:
Dim numbers As Integer() = {1, 2, 3, 4, 5}
- 声明数组并分配大小:
Dim numbers(4) As Integer ' 创建一个有5个元素的数组,索引从0开始
2. 访问数组元素
通过数组的索引来访问数组元素:
Console.WriteLine(numbers(0)) ' 输出数组的第一个元素
3. 数组的常用操作
- 数组长度:
Dim length As Integer = numbers.Length ' 获取数组的长度
Console.WriteLine(length) ' 输出数组的元素个数
- 数组遍历:
For Each num As Integer In numbers
Console.WriteLine(num)
Next
- 修改数组元素:
numbers(0) = 10 ' 将数组第一个元素修改为 10
4. 多维数组
VB.NET 支持多维数组,常见的有二维数组:
Dim matrix(2, 2) As Integer
matrix(0, 0) = 1
matrix(0, 1) = 2
matrix(1, 0) = 3
matrix(1, 1) = 4
5. 锯齿数组(Jagged Array)
锯齿数组是数组的数组,可以创建具有不同行数列的二维数组。
Dim jaggedArray As Integer()() = New Integer(2)() {}
jaggedArray(0) = New Integer() {1, 2, 3}
jaggedArray(1) = New Integer() {4, 5}
jaggedArray(2) = New Integer() {6, 7, 8, 9}
Console.WriteLine(jaggedArray(1)(1)) ' 输出 5
二、集合(Collection)
集合是一个动态大小的对象集合,可以随时增加、删除元素。常见的集合类有 ArrayList 和 List(Of T) 等。
1. 使用 ArrayList
ArrayList 是一个非泛型集合,可以存储任意类型的数据。
Dim list As New ArrayList()
list.Add(1) ' 添加整数
list.Add("Hello") ' 添加字符串
list.Add(True) ' 添加布尔值
For Each item As Object In list
Console.WriteLine(item)
Next
2. 使用 List(Of T)
List(Of T) 是泛型集合,可以限制集合中的元素类型。
Dim numbers As New List(Of Integer)()
numbers.Add(10)
numbers.Add(20)
numbers.Add(30)
For Each num As Integer In numbers
Console.WriteLine(num)
Next
3. 常见操作
- 添加元素:
list.Add("New Item")
- 移除元素:
list.Remove("Hello") ' 移除第一个匹配的元素
list.RemoveAt(0) ' 移除指定索引的元素
- 查找元素:
Dim index As Integer = list.IndexOf("Hello") ' 查找元素的索引
Console.WriteLine(index) ' 输出元素的索引位置
- 清空集合:
list.Clear()
三、泛型(Generics)
泛型是一种允许你定义数据类型的类、方法或接口的机制。使用泛型可以让代码更具类型安全性,且在运行时具有更好的性能。
1. 泛型集合(List(Of T))
泛型集合 List(Of T)
是一个可以存储相同类型元素的动态数组,T 是类型参数。
Dim intList As New List(Of Integer)()
intList.Add(1)
intList.Add(2)
intList.Add(3)
For Each num As Integer In intList
Console.WriteLine(num)
Next
2. 泛型方法
可以定义一个方法,接收不同类型的数据,并且能在运行时根据需要自动推导类型。
Public Sub PrintList(Of T)(items As List(Of T))
For Each item As T In items
Console.WriteLine(item)
Next
End Sub
' 调用泛型方法
Dim stringList As New List(Of String)() From {"Apple", "Banana", "Cherry"}
PrintList(stringList)
3. 泛型类
通过泛型可以创建一个类,这个类可以处理任意类型的数据。
Public Class Box(Of T)
Private value As T
Public Sub New(val As T)
value = val
End Sub
Public Function GetValue() As T
Return value
End Function
End Class
' 创建泛型类实例
Dim intBox As New Box(Of Integer)(10)
Console.WriteLine(intBox.GetValue()) ' 输出 10
4. 泛型接口
泛型接口允许你定义类型参数,并在实现接口时指定具体的类型。
Public Interface IContainer(Of T)
Sub AddItem(item As T)
Function GetItem() As T
End Interface
Public Class Box(Of T) Implements IContainer(Of T)
Private value As T
Public Sub AddItem(item As T) Implements IContainer(Of T).AddItem
value = item
End Sub
Public Function GetItem() As T Implements IContainer(Of T).GetItem
Return value
End Function
End Class
' 使用泛型接口
Dim box As New Box(Of String)()
box.AddItem("Hello")
Console.WriteLine(box.GetItem()) ' 输出 "Hello"
四、总结
- 数组 是固定大小的元素集合,适用于处理简单的、大小已知的数据。
- 集合 提供了更加灵活和动态的数据存储方式,常见的有
ArrayList
和List(Of T)
。 - 泛型 允许我们定义可以处理多种数据类型的类、方法和接口,增强了类型安全性,并且避免了使用非泛型集合时的类型转换问题。
通过使用数组、集合和泛型,可以让程序在处理数据时更加灵活、安全和高效。
发表回复