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

如何简化多次重复实例化Border对象的数组声明?

简化重复实例化同一类型对象的数组声明方式

现有如下代码:

Border[] _headerBorder = new Border[] {
    new Border{}, new Border{}, new Border{}, new Border{}, new Border{},
    new Border{}, new Border{}, new Border{}, new Border{}, new Border{},
    new Border{}, new Border{}, new Border{}, new Border{}, new Border{},
    new Border{}, new Border{}, new Border{}, new Border{}, new Border{}
};

请问如何简化这类需要重复实例化同一类型对象的数组声明方式?

针对这类场景,有几种简洁的实现方式,可根据实际需求选择:

1. 用LINQ的Enumerable.Repeat快速生成(注意引用类型的实例复用问题)

如果Border是值类型,或者可以接受数组所有元素共享同一个引用实例,直接用Repeat生成序列再转数组:

using System.Linq; // 需引入LINQ命名空间

Border[] _headerBorder = Enumerable.Repeat(new Border(), 20).ToArray();

⚠️ 注意:如果Border是引用类型,上述代码会让数组里的20个元素指向同一个对象实例,修改其中一个会同步影响所有元素。

2. 用Enumerable.Range+投影生成独立实例

如果需要每个数组元素都是全新的Border对象,用Range生成索引范围,再通过Select每次创建新实例:

using System.Linq;

Border[] _headerBorder = Enumerable.Range(0, 20)
                                   .Select(_ => new Border())
                                   .ToArray();

这种方式会循环20次,每次生成独立的Border实例,避免引用共享的问题。

3. 传统for循环初始化(无LINQ依赖)

如果不想引入LINQ依赖,用普通for循环手动初始化数组也很直观:

int itemCount = 20;
Border[] _headerBorder = new Border[itemCount];
for (int i = 0; i < itemCount; i++)
{
    _headerBorder[i] = new Border();
}

这种写法兼容性好,不需要额外引用,适合轻量场景。

内容的提问来源于stack exchange,提问作者Alfred E. Neumann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:55:21