你如何将 List<T> 转换为 Vector<T> C#
How would you convert List<T> to Vector<T> C#
我正在使用向量 C# 库 using System.Numerics;
我需要将 List 转换为 Vector
我试过隐式和显式转换类型,但它没有内置兼容性。
我已阅读文档寻找可以进行此转换的方法,但没有找到合适的方法。
我知道我可以使用一个简单的 for 循环实现这种转换,但是在我的程序中多次进行这种转换似乎非常低效,我想知道是否有人知道获得相同结果的更好方法。
Vector<T>
有一个 constructor which takes a Span<T>
, and 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));
这导致从支持 List<T>
的数组内容到支持 Vector<T>
的内存的单个内存副本。
注意 CollectionsMarshal.AsSpan
文档中的警告:它 returns 对 当前 支持 List<T>
的数组的引用,但如果更新列表,那将会改变。不过,只是拍摄快照复制到 Vector<T>
中,这很好。
我正在使用向量 C# 库 using System.Numerics;
我需要将 List 转换为 Vector
我试过隐式和显式转换类型,但它没有内置兼容性。 我已阅读文档寻找可以进行此转换的方法,但没有找到合适的方法。
我知道我可以使用一个简单的 for 循环实现这种转换,但是在我的程序中多次进行这种转换似乎非常低效,我想知道是否有人知道获得相同结果的更好方法。
Vector<T>
有一个 constructor which takes a Span<T>
, and 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));
这导致从支持 List<T>
的数组内容到支持 Vector<T>
的内存的单个内存副本。
注意 CollectionsMarshal.AsSpan
文档中的警告:它 returns 对 当前 支持 List<T>
的数组的引用,但如果更新列表,那将会改变。不过,只是拍摄快照复制到 Vector<T>
中,这很好。