我总是使用类似于抽象类的interfgaces - 只是为了确保所有对象都具有一致的外部方法等。
但是从MSDN,我不明白:
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
void ISampleInterface.SampleMethod()
{
// Method implementation.
}
static void Main()
{
// Declare an interface instance.
ISampleInterface obj = new ImplementationClass();
// Call the member.
obj.SampleMethod();
}
}
为什么在方法声明中明确提到了接口名称,为什么没有它就无法工作? 另外为什么接口是instantionated,不应该只是实现它的类的实例?
答案 0 :(得分:1)
为什么方法中明确提到了接口名称 宣言以及为什么没有它就行不通?
有时,明确实现您的界面非常方便。请参阅此其他Stack Overflow问题答案:https://stackoverflow.com/questions/408415/why-explicit-interface-implementation
为什么界面是实例化的,不应该只是 实现它的类的实例?
他们将ImplementationClass
实例化,但将其向下转移到ISampleInterface
,从而阻止他们触及非接口合同保证的方法/属性。