为什么.NET中存在预定义接口

Hak*_*sai 0 c#

我知道接口的概念..但有一点我无法理解为什么.NET中有这么多预定义接口,如IComparable,IClonable,IFormattable,IDisposable?如果只在这些接口中声明了方法,那么我们甚至可以定义自己的方法和perom任务.那么接口的用途是什么?

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

Mat*_*eer 7

就拿List<T>例如,它有一个Sort方法.当你打电话时myList.Sort(),列表会自行排序.但是,如果你想控制它的分类怎么办?什么先发生?什么是第二个?我们需要帮助排序方法,并为它提供一些用于排序的东西.这是其他版本的排序发挥作用的地方:Sort(IComparer<T>)

应该给什么?可以在我们的列表中包含两个项目并告诉排序方法它们进入哪个顺序的东西,所以类似于

int Compare(T a, T b);
Run Code Online (Sandbox Code Playgroud)

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

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