C#中如何无循环快速将数组复制到结构体数组成员?
无需显式循环快速将数组复制到结构体数组成员的方法
要实现这个需求,你可以借助LINQ的Zip方法,在代码层面避免显式编写for循环,同时完成两个数组到结构体数组的映射:
using System; using System.Linq; public class Program { struct Output { public int A; public int B; } public static void Main() { var a_array = new int[] { 0, 2, 4, 6 ,8, 10, 12, 14, 16, 18}; var b_array = new int[] { 1, 3, 5, 7 ,9, 11, 13, 15, 17, 19}; // 配对两个数组元素并生成结构体数组 var output_array = a_array.Zip(b_array, (aVal, bVal) => new Output { A = aVal, B = bVal }).ToArray(); Console.WriteLine(output_array[3].A); // 输出6 } }
说明:
Zip方法会按索引一一对应a_array和b_array的元素,通过lambda表达式创建包含对应A、B值的Output结构体。- 最后调用
ToArray()将LINQ查询结果转换为结构体数组,此时output_array[3].A的值就是a_array[3]的6。
如果不想引入LINQ,也可以用Array.ConvertAll来实现,同样无需显式循环:
var output_array = new Output[a_array.Length]; Array.ConvertAll(a_array, (val, index) => { output_array[index] = new Output { A = val, B = b_array[index] }; return val; });
需要注意的是,这两种方法内部依然会遍历数组(本质还是循环),只是不需要你手动编写for/foreach循环。如果追求最高性能,手动的for循环其实是最优选择,但如果优先代码简洁性,上面的方法更合适。
内容的提问来源于stack exchange,提问作者Luna Hwang
相关产品推荐
相关产品推荐

