obsidian/笔记文件/2.笔记/Array.ConvertAll.md
2025-03-26 00:02:56 +08:00

3.0 KiB
Raw Permalink Blame History

#unity/日常积累

Array.ConvertAll 是 .NET 中的一个方法,用于将一个数组中的每个元素转换为另一个类型的数组。它属于 Array 类的一部分,允许你使用转换函数将原始数组中的每个元素映射到一个新数组中。这个方法非常有用,尤其是当你需要将一个类型的数组转换为另一个类型的数组时。

方法签名:

public static U[] ConvertAll<T, U>(T[] array, Converter<T, U> converter);
  • T[] array:原始数组,包含要转换的元素。
  • Converter<T, U> converter:转换方法,定义如何将每个元素从类型 T 转换为类型 U
  • 返回值:返回一个新的类型为 U[] 的数组,包含转换后的元素。

使用示例:

假设我们有一个整数数组,我们想将它转换为字符串数组:

using System;

class Program
{
    static void Main()
    {
        // 原始数组
        int[] numbers = { 1, 2, 3, 4, 5 };

        // 使用 Array.ConvertAll 转换为字符串数组
        string[] stringNumbers = Array.ConvertAll(numbers, num => num.ToString());

        // 打印结果
        foreach (var str in stringNumbers)
        {
            Console.WriteLine(str);
        }
    }
}

输出

1
2
3
4
5

在这个例子中,我们将 int[] numbers 数组中的每个整数转换成了字符串,最终得到了一个字符串数组 string[] stringNumbers

更复杂的转换:

你可以使用 Array.ConvertAll 进行更复杂的转换,例如将一个对象数组转换为另一个对象类型的数组,或执行更复杂的操作。

例如,将一个表示人的姓名的数组转换为包含问候语的字符串数组:

using System;

class Program
{
    static void Main()
    {
        // 姓名数组
        string[] names = { "Alice", "Bob", "Charlie" };

        // 使用 Array.ConvertAll 添加问候语
        string[] greetings = Array.ConvertAll(names, name => "Hello, " + name + "!");

        // 打印问候语
        foreach (var greeting in greetings)
        {
            Console.WriteLine(greeting);
        }
    }
}

输出

Hello, Alice!
Hello, Bob!
Hello, Charlie!

工作原理:

Array.ConvertAll 是通过调用提供的 Converter<T, U> 委托(通常是一个 Lambda 表达式或方法引用)来处理原始数组中的每个元素。这使得 Array.ConvertAll 非常灵活和强大,能够快速实现批量转换。

其他注意事项:

  • Array.ConvertAll 不会改变原始数组,它会返回一个新的数组。
  • 由于 Array.ConvertAll 是一个静态方法,你不需要实例化 Array 类就可以调用它。

总结:

  • Array.ConvertAll 用于将一个数组的元素转换为另一种类型的数组。
  • 它接收一个数组和一个转换函数作为参数,并返回一个新的数组。
  • 这个方法在处理大量数据时非常有用,特别是在需要批量转换或处理数据时。