首页 / C# / C#接口,多态性和代理
C#接口,多态性和代理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#接口,多态性和代理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1116字,纯文字阅读大概需要2分钟。
内容图文
![C#接口,多态性和代理](/upload/InfoBanner/zyjiaocheng/816/119800d25d8d4d3dad69950c58908e8f.jpg)
当我结合接口和多态时,我搞得一团糟.
说我有以下界面:
public Interface CanSayHello
{
String SayHello();
}
以下课程:
public Class Person : CanSayHello
{
public String SayHello() { return "Hey, I'm a person just saying hello to you";}
}
最后是重要的班级:
public Class PoshPerson: Person
{
public String SayHello() { return "Hey, I'm too posh to say hello to you";}
}
我的第一个问题是以下代码会收集PoshClass或Person Class的方法吗?
public delegate String Collector();
event Collector CollectorEvent;
void GetMethod(CanSayHello c){CollectorEvent += c.SayHello;}
**GetMethod(new PoshPerson());**
如果它将从Person类中收集方法,我想我应该将Person的方法声明为virtual,并将PoshPerson的方法覆盖.
我真的希望这两个方法签名是相同的.有可能吗?
解决方法:
您的示例运行Person的方法.如果你将PoshPerson改为PoshPerson:Person,CanSayHello(你可能认为它不会改变任何东西,因为Person:CanSayHello),它运行PoshPerson的方法.
我同意@millimoose:“我会尽可能地避免方法隐藏,正是因为编译时多态性不是很直观.”我建议您将Person.SayHello更改为virtual,并将PoshPerson.SayHello更改为覆盖.这样,无论您是将实例知道为CanSayHello,Person还是PoshPerson,都会运行当前实例类型的方法.
内容总结
以上是互联网集市为您收集整理的C#接口,多态性和代理全部内容,希望文章能够帮你解决C#接口,多态性和代理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。