【发布时间】:2013-12-29 04:41:46
【问题描述】:
IComparable 类提供了一个CompareTo 方法,用于比较两个对象并确定
它们的顺序,IEquatable 类提供了一个 Equals 方法来确定一个对象是否等于另一个对象,IEnumerable 类提供了一个 GetEnumerator 方法,该方法返回一个 IEnumerator 对象,该对象具有 MoveNext 和 @用于在对象列表中移动的 987654329@ 方法,ICloneable 类提供返回对象副本的 Clone 方法,等等。
为什么我们需要实现这些接口来提供这个功能?难道我们不能只定义一个Equals、GetEnumerator、MoveNext、Reset和Clone方法而不实现接口吗?
我怀疑这与一次使用两个对象有关(例如,用于比较),您需要某种总体类来执行此操作,但我无法理解它。或者,也许接口确实提供了一些额外的功能,否则是不可能的(例如,IDisposable 有时似乎是一个必要的标记)?我希望有人能解释为什么每个人都实现接口而不是仅仅在类本身中提供功能。
【问题讨论】:
-
@CodeCaster:基本上,我同意,但我也认为与另一个问题相比,这是一个更好的问题(因为这个问题详细说明了为什么人们认为接口是不必要的)。 (当然,另一个问题的公认答案已经很好了。)
-
@O.R.Mapper 你是对的,其他问题可以更好地措辞,以使其成为参考“为什么使用接口”问题。
标签: c# oop inheritance