gpt4 book ai didi

.net - 为什么 Vector.Count 是静态的?

转载 作者:行者123 更新时间:2023-12-04 18:35:48 28 4
gpt4 key购买 nike

我正在尝试使用 System.Numerics.Vector<T> ( documentation )。

我写了一个简单的单元测试:

var v = new System.Numerics.Vector<double>(new double[] { 12, 13, 14 });
Assert.AreEqual(3, v.Count);

但它给了我一个构建错误:

Member 'Vector.Count' cannot be accessed with an instance reference; qualify it with a type name instead



令我惊讶的是, Vector<T>.Count是静态的。

所以我试过:
var v = new System.Numerics.Vector<double>(new double[] { 12, 13, 14 });
Assert.AreEqual(3, Vector<double>.Count);

现在代码构建但单元测试失败:

Assert.AreEqual failed. Expected:<3>. Actual:<2>.



这是怎么回事?

调查我发现:
Assert.AreEqual(2, Vector<double>.Count);
Assert.AreEqual(4, Vector<float>.Count);
Assert.AreEqual(4, Vector<int>.Count);
Assert.AreEqual(2, Vector<long>.Count);

最佳答案

The documentation表明这是设计使然:

The count of a Vector instance is fixed, but its upper limit is CPU-register dependent.



它的目的是允许使用硬件功能进行矢量化操作,因此它的容量与您的 CPU 架构相关联。

关于.net - 为什么 Vector<T>.Count 是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343659/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com