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

初始化IRule接口列表报错:无法将void转换为IRule

集合初始化语法误用导致的类型转换错误

实现了IRule接口的testing类实例完全可以作为List的有效成员,你遇到的错误和实例类型无关,纯粹是用错了集合初始化的写法。

错误原因

你在new List<IRule>()的初始化器中写了Rules.Add(new testing()),但List<T>.Add()方法的返回值是void(没有返回值),而集合初始化器要求大括号内的每一项都是IRule类型的元素。编译器会把你写的Add方法调用的返回值(void)当成要加入列表的元素,自然会报“无法从void转换为IRule”的错误。

两种正确写法

写法一:正确使用集合初始化器

直接在大括号里列出要添加的实例,编译器会自动帮你调用Add方法:

public class SomeClass
{
    List<IRule> Rules { get; set; }

    public SomeClass()
    {
        Rules = new List<IRule>()
        {
            new testing()
        };
    }
}

写法二:先初始化空列表,再手动调用Add

分开初始化列表和添加元素,逻辑更清晰:

public class SomeClass
{
    List<IRule> Rules { get; set; }

    public SomeClass()
    {
        Rules = new List<IRule>();
        Rules.Add(new testing());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:04:52