C# 中的数组切片
本教程将介绍在 C# 中切片数组的方法。
C# 中使用 Linq 方法进行数组切片
将数组切成更小的子数组的过程称为数组切分。Linq 用于将查询功能与 C# 中的数据结构集成在一起。Linq 的 Take(x)
函数从数据结构的开始复制 x
个元素。以下代码示例向我们展示了如何使用 C# 中的 Linq 切片数组。
using System;
using System.Linq;
namespace array_slicing {
class Program {
static void Main(string[] args) {
string[] foo = { "one", "two", "three", "four", "five" };
string[] bar = foo.Take(2).ToArray();
foreach (var e in bar) {
Console.WriteLine(e);
}
}
}
}
输出:
one
two
我们初始化了字符串 foo
的数组,并将其切成另一个字符串数组 bar
,其中包含 foo
数组的前两个元素。此方法非常有限,因为我们只能使用此方法对数组的起始元素进行切片。
使用 C# 中的 ArraySegment
类进行数组切片
在 C# 中,ArraySegment
类用来将一个数组切成一个子数组。ArraySegment
类的构造方法将要分割的数组,起始索引和要分割的元素数量提供给我们一个子数组。下面的代码示例向我们展示了如何使用 C# 中的 ArraySegment
类对数组进行切片。
using System;
using System.Linq;
namespace array_slicing {
class Program {
static void Main(string[] args) {
string[] a = { "one", "two", "three", "four", "five" };
var segment = new ArraySegment<string>(a, 2, 3);
foreach (var s in segment) {
Console.WriteLine(s);
}
}
}
}
输出:
three
four
five
我们初始化了字符串 a
的数组,并将其切成一个子数组 segment
,该子数组包含 3 个元素,这些元素从 a
数组的索引 2 开始,并带有 ArraySegment
类的构造函数。这是一种更好的方法,因为我们可以使用这种方法从中间对数组进行切片。
用 C# 中的扩展函数对数组进行切分
扩展方法使我们可以在不声明自定义数据类型的情况下向现有数据类型添加函数。我们还可以定义用户定义的扩展方法而不是用在 C# 中切片数组的内置方法。此扩展方法可以获取切片的开始和结束索引,并返回此范围内的子数组。以下代码示例向我们展示了如何定义扩展函数以在 C# 中对数组进行切片。
using System;
using System.Collections.Generic;
namespace iterate_through_a_list {
public static class Extensions {
public static T[] Slice<T>(this T[] source, int start, int end) {
if (end < 0) {
end = source.Length + end;
}
int len = end - start;
T[] res = new T[len];
for (int i = 0; i < len; i++) {
res[i] = source[i + start];
}
return res;
}
}
class Program {
static void Main(string[] args) {
string[] values = { "one", "two", "three", "four", "five" };
string[] slice = values.Slice(2, 4);
foreach (var s in slice) {
Console.WriteLine(s);
}
}
}
}
输出:
three
four
five
我们创建了一个扩展方法 Slice()
,该方法采用切片的开始和结束索引并返回切片的子数组。我们初始化了字符串 values
的数组,并将其切成数组 slice
,其中包含值从 values
数组的索引 2
到索引 4
的值。
相关文章
在 C# 中将整数转换为布尔值
发布时间:2024/01/03 浏览次数:71 分类:编程语言
-
在 C# 中,有两种主要方法可用于将整数转换为布尔值:Convert.ToBoolean()函数和 switch 语句。
在 C# 中将 Long 转换为整数
发布时间:2024/01/03 浏览次数:68 分类:编程语言
-
有两种主要方法可用于将长变量转换为 C# 中的整数变量,即类型转换方法和 Convert.ToInt32()函数。
在 C# 中将 Int 转换为十六进制
发布时间:2024/01/03 浏览次数:156 分类:编程语言
-
ToString()函数可用于将整数值转换为十六进制字符串,而 Convert.ToInt32()函数可用于将十六进制字符串转换为 C# 中的整数值。
在 C# 中对 DataTable 进行排序
发布时间:2024/01/03 浏览次数:160 分类:编程语言
-
可使用两种主要方法对 C# 中的数据表进行排序:DataView.Sort 属性和 DataTable.DefaultView 属性。
在 C# 中读取 JSON 文件
发布时间:2024/01/03 浏览次数:146 分类:编程语言
-
Json.net 命名空间内的 JsonConvert 类可用于在 C# 中对 JSON 文件执行读取和写入操作。
C# 中的 DateTime 中设置 null 值
发布时间:2024/01/03 浏览次数:91 分类:编程语言
-
在本文中,你将了解 DateTime 对象的基础知识以及如何在 C# 中使用它来分配空值。