Tag: 非虚拟接口

C#调用非虚拟实现的接口方法

我是C#的新手,我不明白为什么编译器不会抱怨这段代码。 这是类的层次结构: interface IAble { void f(); } class AAble : IAble { public void f() { Debug.Log(“—->> A – Able”); } } class BAble : AAble { public void f() { Debug.Log(“—->> B – Able”); } } 执行代码: IAble i = new BAble(); if(); 执行—->> A – Able被打印出来。 为什么? 编译器如何知道应该调用哪个函数? 当决定调用什么函数 – 运行时或编译时? 如果我玷污一个新的class […]

非虚拟接口(NVI)习惯用法在C#和C ++中一样有用吗?

在C ++中,我经常需要NVI来获得API的一致性。 不过,在C#中我没有看到它用得那么多。 我想知道是不是因为C#作为一种语言,提供的function使NVI变得不必要了? (尽管如此,我仍然在C#中使用NVI。)

C#/ C ++中的非虚拟接口设计模式

在设计界面时,有人建议使用非虚拟界面模式。 有人可以简要概述这种模式的好处吗?