Ali*_*aru 12 c# methods interface
我有一个简单的c#问题(所以我相信).我是这个语言的初学者,我遇到了关于实现它们的接口和类的问题.问题是
我有接口 iA
interface iA
{
bool method1
bool method2
bool method3
}
Run Code Online (Sandbox Code Playgroud)
和3个实现接口的类:class B,C和D
class B : iA
{
public bool method1
public bool method2
public bool method3
}
Run Code Online (Sandbox Code Playgroud)
如果B类有另一个不在界面中的方法,那么让我们说method4(),我有以下内容:
iA element = new B();
Run Code Online (Sandbox Code Playgroud)
然后我会用:
element.method4();
Run Code Online (Sandbox Code Playgroud)
我会得到一个错误,说我没有method4()第一个类型的参数iA.
问题是:我是否可以拥有接口类型的对象并使用类进行实例化,并让该对象从类中调用一个方法,该方法不在接口中?
我想出的解决方案是在接口和派生类之间使用抽象类,但IMO会将接口放在范围之外.在我的设计中,我想只使用接口和派生类.
您必须将接口类型转换为类类型;通常我们通过以下方式做到这一点:
B b = element as B; // <- try cast element as B
if (!Object.RefernceEquals(null, b)) { // <- element is B or can be legaly interpreted as B
b.method4();
}
Run Code Online (Sandbox Code Playgroud)
“as”的优点是只有一次强制转换操作,而“is”和(B)必须执行两次强制转换。
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |