对不起,这可能是一个愚蠢的问题,但它困扰着我......
int[] i = {3, 2, 1};
//why
Array.Sort(i);
//instead of
i.Sort();
char c = 'c';
//why
char.IsLetter(c);
//instead of
c.Isletter();
感谢 Pedro d'Aquino 确定了这些提供答案的其他问题。
基本点是结构上的实例方法不是线程安全的,但静态方法是。
请参阅以下问题:
如果您使用 .NET 3.0,您可以使用扩展方法自己完成:
public static class Extensions
{
public static bool IsLetter(this chr)
{
return char.IsLetter(chr);
}
}
然后将其称为: c.IsLetter()
或者按照你想要的方式去做。排序也一样
这是一个实施决策。我不知道框架设计者脑子里都在想什么,但我相信一个原因是允许以最少的努力对自定义类型数组进行排序。
任何实现 iComparable 的类都可以放入数组并排序。如果它是数组的一种方法,那么我将不得不为我的自定义类型编写一个新的 Array 类型。
此外,正如其他人所指出的,原始类型需要这种数组设计。