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

C#自定义带索引器的集合类如何实现直接赋值给List<int>变量

要实现MyCollection实例直接赋值给List<int>类型变量,只需要在类中定义隐式类型转换运算符即可,具体修改方案如下:


修改后的完整代码

class MyCollection
{
    private List<int> internalCollection = new List<int>(new int[] { 1, 2, 3, 4, 5});

    public int this[int i]
    {
        get
        {
            return internalCollection[i];
        }
        set
        {
            internalCollection[i] = value;
        }
    }

    // 新增隐式类型转换规则
    public static implicit operator List<int>(MyCollection collection)
    {
        // 方案1:返回内部集合副本(更推荐,符合封装原则,外部修改不会影响类内部状态)
        return new List<int>(collection.internalCollection);

        // 方案2:直接返回内部集合实例(外部修改会同步到类内部,仅适合需要状态同步的特殊场景)
        // return collection.internalCollection;
    }
}

补充说明

  • 上述代码中implicit关键字表示这是隐式转换,完全匹配你给出的l = m直接赋值的用法
  • 如果后续需要限制必须显式强制转换才能得到List<int>,只需要把implicit替换为explicit,使用时写l = (List<int>)m即可

内容的提问来源于stack exchange,提问作者Švandič

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:54:01