相关疑难解决方法(0)

为什么IsNan是Double类的静态方法而不是实例属性?

问题在标题中,为什么:

return double.IsNaN(0.6d) && double.IsNaN(x);
Run Code Online (Sandbox Code Playgroud)

代替

return (0.6d).IsNaN && x.IsNaN;
Run Code Online (Sandbox Code Playgroud)

我问,因为在实现具有与NaN相同含义的特殊值的自定义结构时,我倾向于选择第二种结构.

此外,属性的性能通常更好,因为它避免复制堆栈上的结构以调用IsNaN静态方法(并且因为我的属性不是虚拟的,所以没有自动装箱的风险).当然,对于内置类型来说这不是一个真正的问题,因为JIT可以很容易地优化它.

我现在最好的猜测是,因为你不能在double类中同时拥有属性和静态方法,所以他们更喜欢java启发的语法.(事实上​​你可以同时定义一个get_IsNaN属性getter,另一个定义一个IsNaN静态方法,但它会混淆任何支持属性语法的.Net语言)

c# oop

12
推荐指数
2
解决办法
1854
查看次数

标签 统计

c# ×1

oop ×1