我有两个接口;ISet 和 ISet。
两者都实现了Add、Remove和Clear方法,但参数类型不同;一个是object,另一个是T。
现在我有两个选择。让ISet从ISet继承,或者让它们彼此独立。
让ISet从ISet继承的一个很大的好处当然是我可以在任何需要ISet的地方使用ISet。但这样做,我也必须对带有T参数的成员添加“new”修饰符。我不太喜欢“new”修饰符,但也许在这种情况下这是更好的选择?
拥有一个既不是ISet也不是ISet的ISet感觉很奇怪。那是逻辑上的假设。我不能确切地说我为什么不喜欢“new”修饰符。就像“goto”关键字一样,我只是尽量不使用它。
你认为我应该选择继承还是不继承?
在.NET中,我们有ICollection和ICollection,它们不继承。IList和IList也是如此。但IEnumerable从IEnumerable继承。
我知道ISet接口已经存在(这只是一个例子)。
两者都实现了Add、Remove和Clear方法,但参数类型不同;一个是object,另一个是T。
现在我有两个选择。让ISet从ISet继承,或者让它们彼此独立。
让ISet从ISet继承的一个很大的好处当然是我可以在任何需要ISet的地方使用ISet。但这样做,我也必须对带有T参数的成员添加“new”修饰符。我不太喜欢“new”修饰符,但也许在这种情况下这是更好的选择?
拥有一个既不是ISet也不是ISet的ISet感觉很奇怪。那是逻辑上的假设。我不能确切地说我为什么不喜欢“new”修饰符。就像“goto”关键字一样,我只是尽量不使用它。
你认为我应该选择继承还是不继承?
在.NET中,我们有ICollection和ICollection,它们不继承。IList和IList也是如此。但IEnumerable从IEnumerable继承。
我知道ISet接口已经存在(这只是一个例子)。
ISet<T>
继承自ISet
,当我将一个ISet<Giraffe>
强制转换为ISet
并向其中添加一个new Rhinoceros()
时,您希望发生什么? - AakashM