对不起,为什么可能是一个愚蠢的问题但是缠着我...

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用于识别这些其他问题提供答案。

基本的一点是,实例的方法上的结构不应线安全的,但是静态的方法。

看到这些问题:

其他提示

这是工具的不需要属于这些类的方法。这加强了单一职责原则

(编辑)我是与Java混淆

关于静态成员的):

  

静态类成员可用于   单独的数据和行为是   独立于任何对象标识的:   数据和功能没有改变   不管发生什么情况   宾语。静态类可用于   当没有数据或行为   依赖于对象的类   身份。

的视图的

线程安全点是也很好的理由。

您可以做到这一点为自己,如果你使用.NET 3.0,使用扩展方法:

public static class Extensions
{
public static bool IsLetter(this chr)
{
 return char.IsLetter(chr);
}
}

然后调用它喜欢:c.IsLetter()

或你想要的方式。在排序相同

这是一个实现决策。我不知道是什么都正在经历的框架设计者的头脑,但我相信其中一个原因是,允许自定义类型的数组用最少的努力进行排序。

实现IComparable的可以被放入一个数组和分类的任何类。如果它是该阵列的方法,那么我将不得不写我的自定义类型的新阵列类型。

此外,如其他人所指出的,原语类型需要这种设计的阵列组成。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top