小编Seb*_*ood的帖子

不应该使用FieldInfo.SetValue将ValueType设置为null失败?

(与PropertyInfo SetValue和nulls相关)

如果我有public class Thing { public int X; },a Thing o和a FieldInfo fi指向该X字段,为什么打电话合法fi.SetValue(o, null)?运行时将字段X设置为零,即default(int)不是抱怨a ValueType不能设置为null.

有没有人知道这种行为背后的设计选择,至少从C#中违背了我最不惊讶的原则?

.net clr least-astonishment

6
推荐指数
1
解决办法
543
查看次数

英特尔x64 FPU中的NaN算法有多慢?

提示和指控比比皆是,使用NaN的算法在硬件FPU中可能"慢".特别是在现代的x64 FPU中,例如在Nehalem i7上,这仍然是真的吗?无论操作数的值如何,FPU乘法都会以相同的速度进行转换?

我有一些插值代码可以离开我们定义的数据的边缘,我正在尝试确定在那里和任何地方检查NaN(或其他一些哨兵值)是否更快,或者只是在方便的点.

是的,我将对我的特定情况进行基准测试(它可能完全由其他东西支配,比如内存带宽),但我很惊讶没有看到一个简洁的摘要来帮助我的直觉.

我将从CLR中做到这一点,如果它对生成的NaN的味道有所不同.

clr 64-bit nan fpu

5
推荐指数
1
解决办法
621
查看次数

nunit-console可以列出测试夹具中的所有测试名称吗?

我想在它们运行之前报告它们,并且可以选择通过shell脚本运行单个测试而无需管理类别.我们有一些非托管代码可能会使进程处于错误状态,有时很高兴每个nunit-console运行时单独运行每个测试.

nunit unmanaged nunit-console

5
推荐指数
1
解决办法
1792
查看次数

为什么我们不能满足带有类型扩展的F#静态成员约束?

我希望能够使用静态方法从其他库扩展类型以启用泛型算法.以VectorN微软新推出的SIMD友好型固定尺寸类型为例.他们定义Zero,他们定义(+),他们定义(/),但我不能使用Array.average它们,因为他们没有定义DivideByInt,我很乐意:

open System.Numerics
type Vector2f with 
  static member DivideByInt (v:Vector2f) (i:int) = v / Vector2f(single i, single i)
let bigArray : Vector2f[] = readABigFile()
printf "the average is %A" (Array.average bigArray)
Run Code Online (Sandbox Code Playgroud)

但它不会让我编译,抱怨

error FS0001: The type 'Vector2f' does not support the operator 'DivideByInt'
Run Code Online (Sandbox Code Playgroud)

为什么F#编译器中存在此限制?

(编辑:基本上问同样的问题.)

f# generic-constraints

5
推荐指数
1
解决办法
349
查看次数