题
对不起,为什么可能是一个愚蠢的问题但是缠着我...
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的可以被放入一个数组和分类的任何类。如果它是该阵列的方法,那么我将不得不写我的自定义类型的新阵列类型。
此外,如其他人所指出的,原语类型需要这种设计的阵列组成。
不隶属于 StackOverflow