2012-07-06 58 views
0

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

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

+0

因为它们都用在.net中的开箱具体'类型'中以抽象出实现细节...... – xandercoded 2012-07-06 02:41:02

+4

它们存在以便您可以创建实现它们的类并让您的类可插入到.Net框架 – codingbiz 2012-07-06 02:44:12

+1

接口是抽象的。 .NET框架的目标是提供有用的抽象,所以您不必编写自己的抽象。 – 2012-07-06 02:50:24

回答

7

List<T>为例,它有一个Sort方法。当您拨打myList.Sort()时,该列表将自行排序。但是如果你想控制它的分类呢?首先是什么?第二个是什么?我们需要帮助排序方法,并给它一些用于排序的东西。这就是其他版本的排序:Sort(IComparer<T>)

应该给什么?的东西,可以采取两个项目在我们的名单,并告诉排序方法,他们去的次序,所以像

int Compare(T a, T b); 

这正是在IComparer<T>

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

相关问题