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

C#如何修改自定义类以支持类似多维数组的语法初始化类数组

实现方案

这种初始化语法完全可以实现,只需要对应调整类定义即可,具体方案如下:

方案1:仅修改类构造函数(最常用)

只需要给PossibleSettingsData新增一个3参数的构造函数,参数顺序和你初始化时传入的顺序对应即可:

public class PossibleSettingsData
{
    public int Value { get; set; }
    public string Definition { get; set; }
    public object Meaning { get; set; }

    // 新增对应参数的构造函数
    public PossibleSettingsData(int value, string definition, object meaning)
    {
        Value = value;
        Definition = definition;
        Meaning = meaning;
    }
}

初始化时只需要补全每个元素的new关键字就可以正常使用,写法如下:

var PossibleSettings = new PossibleSettingsData[]
{
    new PossibleSettingsData(5 ,"4800 baud", 4800),
    new PossibleSettingsData(6 ,"9600 baud", 9600),
    new PossibleSettingsData(7 ,"19200 baud" ,19200)
};

方案2:完全匹配你写的省略new的初始化语法

如果你一定要实现完全不用写new、只用花括号包裹参数的写法,和Dictionary的初始化语法完全一致,可以通过自定义集合类实现,底层逻辑和Dictionary的初始化规则相同:只要类实现了IEnumerable接口,且存在对应参数的Add方法,就可以用该语法。

  1. 先自定义集合类:
public class PossibleSettingsDataCollection : IEnumerable<PossibleSettingsData>
{
    private readonly List<PossibleSettingsData> _data = new List<PossibleSettingsData>();
    
    // 对应参数的Add方法
    public void Add(int value, string definition, object meaning)
    {
        _data.Add(new PossibleSettingsData(value, definition, meaning));
    }

    public IEnumerator<PossibleSettingsData> GetEnumerator() => _data.GetEnumerator();
    IEnumerator IEnumerable.GetEnumerator() => _data.GetEnumerator();
    
    // 提供转数组方法
    public PossibleSettingsData[] ToArray() => _data.ToArray();
}
  1. 直接使用你想要的语法初始化:
var PossibleSettings=new PossibleSettingsDataCollection
{
    { 5 ,"4800 baud", 4800},
    { 6 ,"9600 baud", 9600},
    { 7 ,"19200 baud" ,19200}
}.ToArray();

说明

  • 原生C#数组没有内置对应多参数的Add方法,所以无法直接对数组使用完全省略new的花括号初始化语法,必须通过自定义集合类中转
  • 无特殊需求优先使用方案1,性能更高、代码更简洁

内容的提问来源于stack exchange,提问作者mohammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:15:04