0

我知道接口的概念.. 但有一件事我不明白为什么.NET 中有这么多预定义接口,比如 IComparable、IClonable、IFormattable、IDisposable?如果只是在这些接口中声明了方法,那么我们甚至可以定义自己的方法和权限任务。那么这里的接口有什么用呢?

在这里我要问这个问题的概念是接口只能声明函数签名,但不能定义功能......那为什么要预定义接口?即使我们必须实现接口定义的方法,那为什么不是我们自己的方法呢?

4

1 回答 1

7

List<T>个例子,它有一个Sort方法。当您调用myList.Sort()时,列表将自行排序。但是如果你想控制它的排序方式呢?首先是什么?其次是什么?我们需要帮助 sort 方法并给它一些用于排序的东西。这就是其他版本的 sort 发挥作用的地方:Sort(IComparer<T>)

应该给予什么?可以在我们的列表中获取两个项目并告诉排序方法它们进入的顺序的东西,比如

int Compare(T a, T b);

这正是中定义的方法IComparer<T>

我们完全可以在任何类中编写该方法,但问题是 C# 是一种强类型语言。我们不能给出Sort任何旧对象——即使它上面有那个方法——它必须Sort是熟悉的东西。接口弥合了这一差距。我们的类可以实现IComparer<T>,我们可以将其传递给Sort,并且由于我们知道IComparer<T>并且也知道 ,所以Sort每个人都很高兴并且在同一页面上。该接口告诉Sort知道传入的对象Compare在它上面,它可以安全地调用它。

于 2012-07-06T02:48:14.627 回答