1 c#
所以我在C#中构建一个小应用程序,我有一个IEnumerable,我想把它转换成List.这就是我得到的:
var enumerable = SettingsManager.ReadSettings();
var list = enumerable.Cast<Setting>().ToList();
Run Code Online (Sandbox Code Playgroud)
编译器说无法从使用中推断出ReadSettings.这就是ReadSettings的样子:
public static IEnumerable<T> ReadSettings<T>()
{
//Code omitted
return JsonConvert.DeserializeObject<T[]>(fileAsString).ToList<T>();
}
Run Code Online (Sandbox Code Playgroud)
如果您的方法是通用的,则应提供泛型类型参数.从你的用法我想你是在类型之后Setting,所以你的正确代码是这样的:
var enumerable = SettingsManager.ReadSettings<Setting>();
var list = enumerable.ToList();
Run Code Online (Sandbox Code Playgroud)
现在enumerable有一个在compile -time中已知的强类型,这就是为什么你可以省略将该列表中的每个元素都转换为Setting-type.
如果您不知道停留在提到使用反射在运行时you're实际的类型在这个岗位.
编辑:因为您的ReadSettings-method实际上通过调用生成一个列表,ToList您可以在第二ToList行省略显式的second -call并转换为List<T>.另外 - 和imho更好 - 是在内部省略那个电话ReadSettings.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |