gpt4 book ai didi

.NET Convert 隐式可转换类型数组

转载 作者:行者123 更新时间:2023-12-04 05:14:02 24 4
gpt4 key购买 nike

假设我们有两种引用类型:AB , 并且 A 实现了隐式转换运算符(到 B):

class A
{
private B b;
public static implicit operator B(A a) { return a.b; }
}
class B
{
}

转换 A 数组的最佳(简洁和/或快速)方法是什么?到 B 的数组?

最佳答案

有效且相当直接的一件事是使用 Linq:

A[] a = new A[5];//initialize elements
B[] b = a.Select(anA => (B)anA).ToArray();

但是使用 Linq 的 Cast<> 方法不起作用:( see why )
B[] b2 = a.Cast<B>.ToArray();//throws InvalidCastException

更新:这是一个不使用 Linq 的:
B[] b = Array.ConvertAll(a, elem => (B) elem);

这可以使用更详细的方法在 pre-lambda .NET 2.0 中工作:
B[] b = Array.ConvertAll(a, 
new Converter<A, B>(delegate(A elem) { return (B) elem; }));

...并且可能使用较短的版本:
B[] b = Array.ConvertAll(a, delegate(A elem) { return (B) elem; });

关于.NET Convert 隐式可转换类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523213/

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