如何在C#中获取System.Numerics.Vector的元素?

Mar*_*sch 5 c# vector count system.numerics

我想访问System.Numerics.Vector<T>C#中的元素.我正在关注官方文档:https://docs.microsoft.com/en-us/dotnet/api/system.numerics.vector-1?view = netcore-2.2

我能够创建具有不同数据类型的不同向量.例如:var test = new Vector<double>(new double[] { 1.0, 2.0, 1.0 });

但现在我遇到了问题,我无法调用test.Count; 无法在类型实例上调用Count System.Numerics.Vector<T>.

我可以访问单个元素access operator [],但我不知道向量中有多少元素.

根据文件,应该有公共财产:

public static int Count { get; }
Run Code Online (Sandbox Code Playgroud)

但我不能打电话给我的实例System.Numerics.Vector<T>.相反,我只能以静态方式调用它,如下所示:

Vector<double>.Count
Run Code Online (Sandbox Code Playgroud)

这相当于2.

我也可以打电话:

Vector<Int32>.Count
Run Code Online (Sandbox Code Playgroud)

回归:4和

Vector<Int16>.Count
Run Code Online (Sandbox Code Playgroud)

返回8.

现在我真的有点困惑,关于如何使用这个静态属性.起初,我想,这个属性将返回存储在向量中的元素数量(如文档中所述).其次,我想,这个属性返回内存中向量的大小,但是这个数字从double增加到Int32到Int16.

有趣的是,我无法从我创建的实例中调用此静态属性:

var test = new Vector<double>(new double[] { 1.0, 2.0, 1.0 });
Run Code Online (Sandbox Code Playgroud)

我不能打电话test.Count!

你知道如何访问元素System.Numerics.Vector<T>吗?

Dan*_*ite 6

没有办法做到这一点.Vector<T>具有固定的大小,因为它正在尝试优化硬件加速.文档说明:

Vector<T>实例的计数是固定的,但其上限取决于CPU寄存器.它旨在用作矢量化大型算法的构建块.

阅读https://source.dot.net/#System.Private.CoreLib/shared/System/Numerics/Vector.cs上的来源

显示如果传递的数据少于所需数据,它将抛出,并且只接受Count传入的项目.