- F# 基础教程
- F# - 首页
- F# - 概述
- F# - 环境设置
- F# - 程序结构
- F# - 基本语法
- F# - 数据类型
- F# - 变量
- F# - 运算符
- F# - 决策
- F# - 循环
- F# - 函数
- F# - 字符串
- F# - 可选项
- F# - 元组
- F# - 记录
- F# - 列表
- F# - 序列
- F# - 集合
- F# - 映射
- F# - 判别联合
- F# - 可变数据
- F# - 数组
- F# - 可变列表
- F# - 可变字典
- F# - 基本输入/输出
- F# - 泛型
- F# - 委托
- F# - 枚举
- F# - 模式匹配
- F# - 异常处理
- F# - 类
- F# - 结构体
- F# - 运算符重载
- F# - 继承
- F# - 接口
- F# - 事件
- F# - 模块
- F# - 命名空间
F# - 可变列表
List<'T> 类表示一个强类型对象列表,可以通过索引访问。
它是 List 类的可变对应物。它类似于数组,因为它可以通过索引访问,但是,与数组不同的是,列表可以调整大小。因此,您无需在声明期间指定大小。
创建可变列表
使用new关键字并调用列表的构造函数来创建列表。以下示例演示了这一点:
(* Creating a List *)
open System.Collections.Generic
let booksList = new List<string>()
booksList.Add("Gone with the Wind")
booksList.Add("Atlas Shrugged")
booksList.Add("Fountainhead")
booksList.Add("Thornbirds")
booksList.Add("Rebecca")
booksList.Add("Narnia")
booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
编译并执行程序时,将产生以下输出:
0: Gone with the Wind 1: Atlas Shrugged 2: Fountainhead 3: Thornbirds 4: Rebecca 5: Narnia
List(T) 类
List(T) 类表示一个强类型对象列表,可以通过索引访问。它提供用于搜索、排序和操作列表的方法。
下表提供了 List(T) 类的属性、构造函数和方法:
属性
| 属性 | 描述 |
|---|---|
| Capacity | 获取或设置内部数据结构在不调整大小的情况下可以容纳的元素总数。 |
| Count | 获取 List(T) 中包含的元素数。 |
| Item | 获取或设置指定索引处的元素。 |
构造函数
| 构造函数 | 描述 |
|---|---|
| List(T)() | 初始化一个新的空 List(T) 类实例,并具有默认初始容量。 |
| List(T)(IEnumerable(T)) | 初始化一个新的 List(T) 类实例,其中包含从指定集合复制的元素,并且具有足够的容量来容纳复制的元素数。 |
| List(T)(Int32) | 初始化一个新的空 List(T) 类实例,并具有指定的初始容量。 |
方法
| 方法 | 描述 |
|---|---|
| Add | 将对象添加到 List(T) 的末尾。 |
| AddRange | 将指定集合的元素添加到 List(T) 的末尾。 |
| AsReadOnly | 返回当前集合的只读 IList(T) 包装器。 |
| BinarySearch(T) | 使用默认比较器搜索整个已排序的 List(T) 中的元素,并返回元素的基于零的索引。 |
| BinarySearch(T, IComparer(T)) | 使用指定的比较器搜索整个已排序的 List(T) 中的元素,并返回元素的基于零的索引。 |
| BinarySearch(Int32, Int32, T, IComparer(T)) | 使用指定的比较器搜索已排序 List(T) 中的元素范围,并返回元素的基于零的索引。 |
| Clear | 从 List(T) 中移除所有元素。 |
| Contains | 确定 List(T) 中是否包含元素。 |
| ConvertAll(TOutput) | 将当前 List(T) 中的元素转换为另一种类型,并返回包含已转换元素的列表。 |
| CopyTo(T[]) | 将整个 List(T) 复制到兼容的一维数组中,从目标数组的开头开始。 |
| CopyTo(T[], Int32) | 将整个 List(T) 复制到兼容的一维数组中,从目标数组的指定索引开始。 |
| CopyTo(Int32, T[], Int32, Int32) | 将 List(T) 中的元素范围复制到兼容的一维数组中,从目标数组的指定索引开始。 |
| Equals(Object) | 确定指定的对象是否等于当前对象。(继承自 Object。) |
| Exists | 确定 List(T) 是否包含与指定谓词定义的条件匹配的元素。 |
| Finalize | 允许对象尝试释放资源并在垃圾回收器回收它之前执行其他清理操作(继承自 Object)。 |
| Find | 搜索与指定谓词定义的条件匹配的元素,并返回整个 List(T) 中的第一次出现。 |
| FindAll | 检索与指定谓词定义的条件匹配的所有元素。 |
| FindIndex(Predicate(T)) | 搜索与指定谓词定义的条件匹配的元素,并返回整个 List(T) 中第一次出现的基于零的索引。 |
| FindIndex(Int32, Predicate(T)) | 搜索与指定谓词定义的条件匹配的元素,并返回 List(T) 中从指定索引到最后一个元素的元素范围内第一次出现的基于零的索引。 |
| FindIndex(Int32, Int32, Predicate(T)) | 搜索与指定谓词定义的条件匹配的元素,并返回 List(T) 中从指定索引开始并包含指定数量元素的元素范围内第一次出现的基于零的索引。 |
| FindLast | 搜索与指定谓词定义的条件匹配的元素,并返回整个 List(T) 中的最后一次出现。 |
| FindLastIndex(Predicate(T)) | 搜索与指定谓词定义的条件匹配的元素,并返回整个 List(T) 中最后一次出现的基于零的索引。 |
| FindLastIndex(Int32, Predicate(T)) | 搜索与指定谓词定义的条件匹配的元素,并返回 List(T) 中从第一个元素到指定索引的元素范围内最后一次出现的基于零的索引。 |
| FindLastIndex(Int32, Int32, Predicate(T)) | 搜索与指定谓词定义的条件匹配的元素,并返回 List(T) 中包含指定数量元素并以指定索引结束的元素范围内最后一次出现的基于零的索引。 |
| ForEach | 对 List(T) 的每个元素执行指定的动作。 |
| GetEnumerator | 返回一个迭代 List(T) 的枚举器。 |
| GetHashCode | 用作默认哈希函数。(继承自 Object。) |
| GetRange | 创建源 List(T) 中元素范围的浅表副本。 |
| GetType | 获取当前实例的 Type。(继承自 Object。) |
| IndexOf(T) | 搜索指定的对象并返回整个 List(T) 中第一次出现的基于零的索引。 |
| IndexOf(T, Int32) | 搜索指定的对象并返回 List(T) 中从指定索引到最后一个元素的元素范围内第一次出现的基于零的索引。 |
| IndexOf(T, Int32, Int32) | 搜索指定的对象并返回 List(T) 中从指定索引开始并包含指定数量元素的元素范围内第一次出现的基于零的索引。 |
| Insert | 在 List(T) 的指定索引处插入元素。 |
| InsertRange | 在 List(T) 的指定索引处插入集合的元素。 |
| LastIndexOf(T) | 搜索指定的对象并返回整个 List(T) 中最后一次出现的基于零的索引。 |
| LastIndexOf(T, Int32) | 搜索指定的对象并返回 List(T) 中从第一个元素到指定索引的元素范围内最后一次出现的基于零的索引。 |
| LastIndexOf(T, Int32, Int32) | 搜索指定的对象并返回 List(T) 中包含指定数量元素并以指定索引结束的元素范围内最后一次出现的基于零的索引。 |
| MemberwiseClone | 创建当前 Object 的浅表副本。(继承自 Object。) |
| Remove | 从 List(T) 中移除特定对象的第一次出现。 |
| RemoveAll | 移除与指定谓词定义的条件匹配的所有元素。 |
| RemoveAt | 移除 List(T) 指定索引处的元素。 |
| RemoveRange | 从 List(T) 中移除一系列元素。 |
| Reverse() | 反转整个 List(T) 中元素的顺序。 |
| Reverse(Int32, Int32) | 反转指定范围内的元素顺序。 |
| Sort() | 使用默认比较器对整个 List(T) 中的元素进行排序。 |
| Sort(Comparison(T)) | 使用指定的 System.Comparison(T) 对整个 List(T) 中的元素进行排序。 |
| Sort(IComparer(T)) | 使用指定的比较器对整个 List(T) 中的元素进行排序。 |
| Sort(Int32, Int32, IComparer(T)) | 使用指定的比较器对 List(T) 中一系列元素进行排序。 |
| ToArray | 将 List(T) 的元素复制到一个新数组中。 |
| ToString | 返回表示当前对象的字符串。(继承自 Object。) |
| TrimExcess | 如果该数字小于阈值,则将容量设置为 List(T) 中元素的实际数量。 |
| TrueForAll | 确定 List(T) 中的每个元素是否都与指定谓词定义的条件匹配。 |
示例
(* Creating a List *)
open System.Collections.Generic
let booksList = new List<string>()
booksList.Add("Gone with the Wind")
booksList.Add("Atlas Shrugged")
booksList.Add("Fountainhead")
booksList.Add("Thornbirds")
booksList.Add("Rebecca")
booksList.Add("Narnia")
printfn"Total %d books" booksList.Count
booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
booksList.Insert(2, "Roots")
printfn("after inserting at index 2")
printfn"Total %d books" booksList.Count
booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
booksList.RemoveAt(3)
printfn("after removing from index 3")
printfn"Total %d books" booksList.Count
booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
编译并执行程序时,将产生以下输出:
Total 6 books 0: Gone with the Wind 1: Atlas Shrugged 2: Fountainhead 3: Thornbirds 4: Rebecca 5: Narnia after inserting at index 2 Total 7 books 0: Gone with the Wind 1: Atlas Shrugged 2: Roots 3: Fountainhead 4: Thornbirds 5: Rebecca 6: Narnia after removing from index 3 Total 6 books 0: Gone with the Wind 1: Atlas Shrugged 2: Roots 3: Thornbirds 4: Rebecca 5: Narnia
广告