我看到这个Array.ConvertAll
方法,但是需要一个Converter
作为一个论点。当我已经在类中定义了一个隐式转换器时,我不明白为什么需要一个转换器:
public static implicit operator Vec2(PointF p)
{
return new Vec2(p.X, p.Y);
}
我正在尝试投射一系列PointF
s 到一个数组Vec2
s。有什么好的方法可以做到这一点吗?或者我应该把它吸收并编写(另一个)转换器或循环元素?
提议的 LINQ 解决方案使用Cast
/'Select' 很好,但因为你知道你正在使用一个数组,所以使用ConvertAll
效率更高,而且同样简单。
var newArray = Array.ConvertAll(array, item => (NewType)item);
Using ConvertAll
means
a) 数组仅迭代一次,
b) 该操作针对数组进行了更优化(不使用IEnumerator<T>
).
不要让Converter<TInput, TOutput>
type 会让您感到困惑 - 它只是一个简单的委托,因此您可以为其传递 lambda 表达式,如上所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)