You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:18:14