相比
String.Format("Hello {0}", "World");
Run Code Online (Sandbox Code Playgroud)
同
"Hello {0}".Format("World");
Run Code Online (Sandbox Code Playgroud)
为什么.Net设计者选择静态方法而不是实例方法?你怎么看?
问题在标题中,为什么:
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语言)
对不起,这可能是一个愚蠢的问题,但它让我烦恼......
int[] i = {3, 2, 1};
//why
Array.Sort(i);
//instead of
i.Sort();
char c = 'c';
//why
char.IsLetter(c);
//instead of
c.Isletter();
Run Code Online (Sandbox Code Playgroud)