如何将列表<T>转换为向量<T>C#



我正在使用矢量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>中来说,这是可以的。

相关内容

  • 没有找到相关文章

最新更新