【发布时间】:2012-04-15 14:56:55
【问题描述】:
我是 C# 的粉丝,但我想这通常是一个 OOP 问题:
在下面显示的代码中,重新指定class B实现interface I有什么意义吗?
interface I { }
class A : I { }
class B : A, I { }
据我所知,答案是否定的,除非一个类实现了许多接口并且您希望在声明该类时强调某个特定接口时的可读性。
【问题讨论】:
我是 C# 的粉丝,但我想这通常是一个 OOP 问题:
在下面显示的代码中,重新指定class B实现interface I有什么意义吗?
interface I { }
class A : I { }
class B : A, I { }
据我所知,答案是否定的,除非一个类实现了许多接口并且您希望在声明该类时强调某个特定接口时的可读性。
【问题讨论】:
不,没有。事实上,当你不断地重新声明接口时,尤其是当继承链变大时,它会变得有点混乱。如果你想强调一个类实现了一个重要的接口,也许一种方法是在类的注释中的摘要字段中添加信息,以便工具提示显示。
【讨论】:
不,事实上像 ReSharper 这样的工具会告诉你 I 的第二个实现是多余的。
【讨论】:
没有,除了泛型约束之外没有其他意义,即(可能是错误的语法,但你会明白的——我认为(从记忆中)约束在继承和应用约束方面有一些特殊性)
public T MethodName(T gen) where T : I
{
}
【讨论】: