gpt4 book ai didi

c# - 为什么要将 List 转换为 Array

转载 作者:行者123 更新时间:2023-11-30 13:16:52 24 4
gpt4 key购买 nike

查看以下代码行:

public string[] GetStringList(params object[] values)
{
List<string> _stringList = new List<string>();

foreach (object value in values)
{
_stringList.Add(Convert.ToString(value));

//Do something
}

//Why this invalid?
return _stringList;

//Why do required to convert list collection in array
return _stringList.ToArray();
}

既然List和Array都是集合,为什么还要把List转成Array呢?

最佳答案

Since List and Array both are collections then why should I need to convert List into Array?

是的,它们都是集合,但是您的方法签名明确指定了它返回什么type of 集合,这就是为什么您必须准确返回那个集合类型的原因。

您可以使用集合接口(interface)之一更改方法声明以返回字符串集合:

public IEnumerable<string> GetStringList(params object[] values)

public ICollection<string> GetStringList(params object[] values)

它将允许您同时返回 List<string>string[] ,因为它们都实现了接口(interface)。您也可以返回 HashSet<string>甚至 Queue<string> (仅适用于 IEnumerable<string> 版本。或者编写您自己的类,实现您感兴趣的接口(interface)并在您的方法中返回它。

但是只要您使用 string[] 声明该方法,你必须返回一个 string 的数组s 和 List<string>不满足该要求。

OFT 建议

通过 values.Length 可以使您的代码更快一点作为List<string>构造函数参数:

List<string> _stringList = new List<string>(values.Length);

它将使用必要的内存量初始化列表内部存储,并让您添加所有项目而无需重新分配任何内存。

关于c# - 为什么要将 List 转换为 Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20779337/

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