gpt4 book ai didi

.net - F#中的数组协方差

转载 作者:行者123 更新时间:2023-12-04 17:03:52 25 4
gpt4 key购买 nike

由于 .NET 数组是协变的,以下在 C# 中有效:

var strArray = new string[0];
object[] objArray = strArray;

在 F# 中,给定一个数组, 'T[] ,将其转换为 obj[] 的最佳方法是什么? ,而不重新创建数组(例如, Array.map box )?我正在使用 (box >> unbox) ,但感觉很草率。

最佳答案

正如布赖恩所说,box >> unbox 没有任何问题。 ,除此之外,数组协方差本身就被破坏了(例如,([| "test" |] |> box |> unbox<obj[]>).[0] <- obj() 在尝试执行赋值时会抛出一个 ArrayTypeMismatchException)。

相反,您最好处理 string[]作为 obj seq ,这是完全安全的(尽管它仍然需要在 F# 中装箱和拆箱,因为 F# 不支持通用协方差/反方差)。不幸的是,如果你走这条路,你会失去随机访问。

关于.net - F#中的数组协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339013/

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