【发布时间】:2017-12-05 02:33:50
【问题描述】:
谁能解释一下为什么这在 Visual Studio 2015 上有效,但在 Visual Studio 2017 上无效?
public static TConvert DynamicPop<TObject, TConvert>(this IEnumerable<TObject> obj, Converter<TObject, TConvert> converter, long @default = 1)
{
if (obj.Count() == 0)
{
dynamic _defaut = @default;
return (TConvert)_defaut;
}
var collection = obj.ConvertAll<TConvert>(converter);
collection.Sort();
dynamic lastValue = collection.Last();
return (TConvert)(lastValue + 1);
}
这对我说ConvertAll 不存在。
【问题讨论】:
-
ConvertAll显然是List<T>上的一种方法,而不是IEnumerable<T>。也许您在一个环境中拥有另一种环境中不存在的扩展方法? -
在VS 2015解决方案中,右键
ConvertAll,选择Go To Definition。会发生什么? -
鉴于您之前检查过
Count()(因此您得到了双重枚举),您应该考虑将IEnumerable<TObject> obj更改为List<TObject> obj。
标签: c# visual-studio visual-studio-2015 visual-studio-2017