我正在使用矢量C#库using System.Numerics;
我需要将列表转换为矢量
我尝试过隐式和显式转换类型,但它没有内置兼容性。我已经阅读了文档,寻找一种可以进行这种转换的方法,但没有找到任何合适的方法。
我知道我可以使用简单的for循环来实现这种转换,但在我的程序中多次进行这种转换似乎效率非常低,我想知道是否有人知道获得相同结果的更好方法。
Vector<T>
有一个接受Span<T>
的构造函数,而CollectionsMarshal.AsSpan
允许您从List<T>
获得Span<T>
。
例如:
var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
var vector = new Vector<int>(CollectionsMarshal.AsSpan(list));
请参阅SharpLab。
这导致从支持List<T>
的阵列的内容到支持Vector<T>
的存储器的单个存储器拷贝。
注意文档中关于CollectionsMarshal.AsSpan
的警告:它返回一个对当前支持List<T>
的数组的引用,但如果更新列表,这将改变。然而,对于只拍摄快照以复制到Vector<T>
中来说,这是可以的。