#unity/日常积累 `Array.ConvertAll` 是 .NET 中的一个方法,用于将一个数组中的每个元素转换为另一个类型的数组。它属于 `Array` 类的一部分,允许你使用转换函数将原始数组中的每个元素映射到一个新数组中。这个方法非常有用,尤其是当你需要将一个类型的数组转换为另一个类型的数组时。 ### 方法签名: ``` cs public static U[] ConvertAll(T[] array, Converter converter); ``` - **T[] array**:原始数组,包含要转换的元素。 - **Converter converter**:转换方法,定义如何将每个元素从类型 `T` 转换为类型 `U`。 - **返回值**:返回一个新的类型为 `U[]` 的数组,包含转换后的元素。 ### 使用示例: 假设我们有一个整数数组,我们想将它转换为字符串数组: ``` cs 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); } } } ``` **输出**: ``` cs 1 2 3 4 5 ``` 在这个例子中,我们将 `int[] numbers` 数组中的每个整数转换成了字符串,最终得到了一个字符串数组 `string[] stringNumbers`。 ### 更复杂的转换: 你可以使用 `Array.ConvertAll` 进行更复杂的转换,例如将一个对象数组转换为另一个对象类型的数组,或执行更复杂的操作。 例如,将一个表示人的姓名的数组转换为包含问候语的字符串数组: ``` cs 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); } } } ``` **输出**: ``` cs Hello, Alice! Hello, Bob! Hello, Charlie! ``` ### 工作原理: `Array.ConvertAll` 是通过调用提供的 `Converter` 委托(通常是一个 Lambda 表达式或方法引用)来处理原始数组中的每个元素。这使得 `Array.ConvertAll` 非常灵活和强大,能够快速实现批量转换。 ### 其他注意事项: - `Array.ConvertAll` 不会改变原始数组,它会返回一个新的数组。 - 由于 `Array.ConvertAll` 是一个静态方法,你不需要实例化 `Array` 类就可以调用它。 ### 总结: - `Array.ConvertAll` 用于将一个数组的元素转换为另一种类型的数组。 - 它接收一个数组和一个转换函数作为参数,并返回一个新的数组。 - 这个方法在处理大量数据时非常有用,特别是在需要批量转换或处理数据时。