gpt4 book ai didi

c# - 接口(interface)中的IList,实现中的List

转载 作者:行者123 更新时间:2023-12-02 04:56:46 25 4
gpt4 key购买 nike

在我的界面中通常有一个 IList<ISomeType>代表List类型的成员并说我希望实现支持 Add方法。

但是在接口(interface)实现中,有一个

IList<ISomeType> = new List<ISomeType>()

每次我使用列表时,我都必须进行转换,例如

(this.MyList as List<IMyType>).AddRange(someType.ToList());

有更好的方法吗?如何避免这种转换?

- 编辑以询问更多信息-

有没有一个小的 linq 表达式来代替扩展方法来解决这个问题?

IList<string> list = new List<string>();
var items = new[] { "1", "2", "3" };
items.ToList().ForEach(x => list.Add(x));

但这看起来不是很直接,因为它颠倒了正在做的事情。(操作是针对要添加的项目,而不是列表)。

还有比这更好的吗? list 上可能做的事情?

最佳答案

AddRange 不是 IList 上的方法,但是 Add 是,因此您可以轻松地创建扩展方法:

public static void AddRange<T>(this IList<T> list, IEnumerable<T> values) {
foreach(var value in values)
list.Add(value);
}

您还可以在您的扩展方法中检查 list 是否实际上是 List 的一个实例,在这种情况下您可以直接调用 AddRange

关于c# - 接口(interface)中的IList,实现中的List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17854027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com