首页 / C# / c# – 显式运算符重载继承
c# – 显式运算符重载继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 显式运算符重载继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1089字,纯文字阅读大概需要2分钟。
内容图文
![c# – 显式运算符重载继承](/upload/InfoBanner/zyjiaocheng/802/c196419166bf4b73b8b1d196e4447be9.jpg)
我一直在考虑解决问题的方法,我不确定它是否会起作用.
假设我们有一个名为A的基类和3个子类B,C和D.
A
^
-----------------
| | |
B C D
我们还有三个等级X,Y和Z.
在我的系统对象类型B,C,D作为类型A传递,通常我必须将类型B,C,D的对象转换为对象X,Y或Z(这不是演员,我手动转换他们,因为他们完全不同).
因此,要将对象类型A转换为类型X,Y或Z,我需要首先检查子类型,然后根据子类型使用关于A对象的一些操作的结果初始化X,Y或Z对象.
我想过将一个显式的强制转换操作从A重载到X,Y或Z只是做了我在转换它时所做的相同的过程,但后来我想……是否可以使用polimorfism并重载来自B的强制转换, C和D在某种程度上,当我添加一个新的AI子类型时,不需要更改A的强制转换代码?(只需将显式强制转换添加到新的子类型中)
如果有什么令人困惑的话,我希望我已经正确地解释了自己.
注意:我将为X,Y,Z添加一个强制转换
解决方法:
您可以让A类型的强制转换操作符调用A实例的虚拟(或抽象?)实例方法,并覆盖A的每个子类的方法.但是,X,Y和Z应该来自此解决方案的相互基类,但是,所以强制转换操作符可以将该基类作为结果类型.
public abstract class A
{
protected abstract W ConvertToW();
public static explicit operator W(A a)
{
return a.ConvertToW();
}
}
在这个例子中,W是X,Y和Z的基类.
内容总结
以上是互联网集市为您收集整理的c# – 显式运算符重载继承全部内容,希望文章能够帮你解决c# – 显式运算符重载继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。