Vit*_*ski 3 c# arrays casting multidimensional-array
我有类似的东西
var a = new object[2]
{
new double[1] { 0.5 },
new double[1] { 0.5 }
}
Run Code Online (Sandbox Code Playgroud)
我想把它投射到double[][]. 我尝试过(double[][])a,a.Cast<double[][]>()但没成功
你的尝试几乎a.Cast<double[][]>()是正确的。您可以使用:
double[][] b = a.Cast<double[]>().ToArray();
Run Code Online (Sandbox Code Playgroud)
解释:
double[]s,但它们的静态类型为object。要更改列表元素的静态类型,可以使用 LINQ 的Cast<T>.Cast<T>将元素的类型视为T,而不是结果列表的类型(这就是您尝试使用Cast<double[][]>失败的原因)。Cast<double[]>产生一个IEnumerable<double[]>.IEnumerable<double[]>为数组double[](即 a double[][]),我们可以使用 LINQ 的ToArray().请注意,这将
object.ReferenceEquals(a, b)即为 false),但是object.ReferenceEquals(a[0], b[0])true)。