我想访问System.Numerics.Vector<T>
C#中的元素。我正在关注官方文档:https : //docs.microsoft.com/zh-cn/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; }
但我无法调用的实例System.Numerics.Vector<T>
。相反,我只能以静态方式调用它,如下所示:
Vector<double>.Count
等于2。
我也可以致电:
Vector<Int32>.Count
返回:4和
Vector<Int16>.Count
返回8。
现在,我对于如何使用此静态属性确实有些困惑。起初,我认为该属性将返回存储在向量中的元素数量(如文档中所述)。其次,我认为该属性返回内存中向量的大小,但是此数字从double增大到Int32到Int16。
有趣的是,我无法从以下实例创建的实例中调用此静态属性:
var test = new Vector<double>(new double[] { 1.0, 2.0, 1.0 });
我不能打电话test.Count
!
您知道如何访问的元素System.Numerics.Vector<T>
吗?
没有办法做到这一点。Vector<T>
具有固定大小,因为它正在尝试针对硬件加速进行优化。文档状态:
Vector<T>
实例的数量是固定的,但其上限取决于CPU寄存器。它旨在用作向量化大型算法的基础。
在https://source.dot.net/#System.Private.CoreLib/shared/System/Numerics/Vector.cs上阅读源代码
显示如果需要传递的数据较少,它将抛出该异常,并且仅占用Count
传递的项中的最大值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句