gpt4 book ai didi

c# - 将 IEnumerable 转换为 List

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:06 26 4
gpt4 key购买 nike

因此,我正在用 C# 构建一个小型应用程序,其中我有一个 IEnumerable,我想将其转换为一个列表。这是我得到的:

var enumerable = SettingsManager.ReadSettings();
var list = enumerable.Cast<Setting>().ToList();

编译器表示无法从用法中推断出 ReadSettings。这是 ReadSettings 的样子:

public static IEnumerable<T> ReadSettings<T>()
{
//Code omitted
return JsonConvert.DeserializeObject<T[]>(fileAsString).ToList<T>();
}

最佳答案

如果您的方法是通用的,您应该提供一个通用的类型参数。从你的用法来看,我想你是在寻找类型 Setting ,所以你的正确代码是这样的:

var enumerable = SettingsManager.ReadSettings<Setting>();
var list = enumerable.ToList();

现在enumerable具有在编译 时已知的强类型,这就是为什么您可以省略将该列表中的每个元素强制转换为 Setting 的原因-类型。

如果您不知道运行时的实际类型,您就会像提到的那样使用反射 in this post .

编辑:作为您的 ReadSettings -method 实际上通过调用 ToList 生成一个列表你可以省略明确的第二个 ToList - 在第二行调用并转换为 List<T>反而。或者 - 恕我直言更好 - 是在 ReadSettings 中省略该调用.

关于c# - 将 IEnumerable<T> 转换为 List<SomeObject>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281223/

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