如何在C#中获取System.Numerics.Vector的元素?
How to get the elements of a System.Numerics.Vector in C#?
我想在 C# 中访问 System.Numerics.Vector<T>
的元素。
我正在关注官方文档: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;无法在 System.Numerics.Vector<T>
.
类型的实例上调用 Count
我可以使用 access operator []
访问单个元素,但我不知道向量中有多少个元素。
根据文档,应该有 public 属性:
public static int Count { get; }
但是我无法调用我的 System.Numerics.Vector<T>
实例。相反,我只能以静态方式调用它,如下所示:
Vector<double>.Count
这等于 2。
我也可以打电话:
Vector<Int32>.Count
returning: 4 和
Vector<Int16>.Count
return8.
现在我真的有点困惑,关于如何使用这个静态 属性。起初,我想,这个 属性 会 return 向量中存储的元素数量(如文档中所述)。其次,我想,这个 属性 return 是内存中向量的大小,但是这个数字从 double 增加到 Int32 再到 Int16。
有趣的是,我无法从我创建的实例中调用此静态 属性:
var test = new Vector<double>(new double[] { 1.0, 2.0, 1.0 });
我打不通test.Count
!
你知道如何访问 System.Numerics.Vector<T>
的元素吗?
没有办法做到这一点。 Vector<T>
是固定大小,因为它正在尝试针对硬件加速进行优化。文档状态:
The count of a Vector<T>
instance is fixed, but its upper limit is CPU-register dependent. It is intended to be used as a building block for vectorizing large algorithms.
正在 https://source.dot.net/#System.Private.CoreLib/shared/System/Numerics/Vector.cs
阅读源代码
表明如果传入的数据少于所需的数据,它将抛出异常并且最多只占用传入的 Count
个项目。
Vector.Count 属性 只显示它可以容纳多少具体类型的元素。这就是为什么它的价值只会从 double 增加到 short int。您只能在其中容纳 16 个字节,因此 2 个双精度变量、4 个整数变量、8 个短整数变量等等。
我想在 C# 中访问 System.Numerics.Vector<T>
的元素。
我正在关注官方文档: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;无法在 System.Numerics.Vector<T>
.
我可以使用 access operator []
访问单个元素,但我不知道向量中有多少个元素。
根据文档,应该有 public 属性:
public static int Count { get; }
但是我无法调用我的 System.Numerics.Vector<T>
实例。相反,我只能以静态方式调用它,如下所示:
Vector<double>.Count
这等于 2。
我也可以打电话:
Vector<Int32>.Count
returning: 4 和
Vector<Int16>.Count
return8.
现在我真的有点困惑,关于如何使用这个静态 属性。起初,我想,这个 属性 会 return 向量中存储的元素数量(如文档中所述)。其次,我想,这个 属性 return 是内存中向量的大小,但是这个数字从 double 增加到 Int32 再到 Int16。
有趣的是,我无法从我创建的实例中调用此静态 属性:
var test = new Vector<double>(new double[] { 1.0, 2.0, 1.0 });
我打不通test.Count
!
你知道如何访问 System.Numerics.Vector<T>
的元素吗?
没有办法做到这一点。 Vector<T>
是固定大小,因为它正在尝试针对硬件加速进行优化。文档状态:
The count of a
Vector<T>
instance is fixed, but its upper limit is CPU-register dependent. It is intended to be used as a building block for vectorizing large algorithms.
正在 https://source.dot.net/#System.Private.CoreLib/shared/System/Numerics/Vector.cs
阅读源代码表明如果传入的数据少于所需的数据,它将抛出异常并且最多只占用传入的 Count
个项目。
Vector.Count 属性 只显示它可以容纳多少具体类型的元素。这就是为什么它的价值只会从 double 增加到 short int。您只能在其中容纳 16 个字节,因此 2 个双精度变量、4 个整数变量、8 个短整数变量等等。