如何将 List<T> 转换为 Vector<T> C#

1 .net c# list vector system.numerics.vectors

我正在使用向量 C# 库,using System.Numerics; 我需要将列表转换为向量

我尝试过隐式和显式转换类型,但它没有内置兼容性。我已阅读文档寻找可以进行此转换的方法,但没有找到任何合适的方法。

我知道我可以使用简单的 for 循环来实现此转换,但在我的程序中多次进行此转换似乎效率非常低,我想知道是否有人知道获得相同结果的更好方法。

can*_*on7 6

Vector<T>有一个构造函数,它接受 aSpan<T>,并让您从 aCollectionsMarshal.AsSpan获取 a 。Span<T>List<T>

例如:

var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
var vector = new Vector<int>(CollectionsMarshal.AsSpan(list));
Run Code Online (Sandbox Code Playgroud)

请参阅 SharpLab

这会产生从支持 的数组内容List<T>到支持 的内存的单个内存复制Vector<T>

请注意文档中的警告:它返回对当前支持 的CollectionsMarshal.AsSpan数组的引用,但如果列表更新,该引用将会改变。然而,对于只是拍摄快照以复制到 中,这是可以的。List<T>Vector<T>