相关疑难解决方法(0)

为什么String.Format是静态的?

相比

String.Format("Hello {0}", "World");
Run Code Online (Sandbox Code Playgroud)

"Hello {0}".Format("World");
Run Code Online (Sandbox Code Playgroud)

为什么.Net设计者选择静态方法而不是实例方法?你怎么看?

.net string

38
推荐指数
6
解决办法
4466
查看次数

为什么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
查看次数

为什么不在Array实例中内置Array方法?

对不起,这可能是一个愚蠢的问题,但它让我烦恼......

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)

.net arrays char

10
推荐指数
1
解决办法
219
查看次数

1
推荐指数
2
解决办法
1468
查看次数

标签 统计

.net ×3

string ×2

arrays ×1

c# ×1

char ×1

oop ×1