在c#中实现多态,如何做到最好?

在c#中实现多态,如何做到最好?,第1张

概述第一个问题在这里,所以希望你们都会轻轻地对我说话! 在过去的几天里,我一直在阅读关于多态的非常多的内容,并试图将它应用到我在c#中所做的事情,似乎有几种不同的方法来实现它.我希望我已经掌握了这个,但即使我没有澄清,我也很高兴. 从我所看到的,我有3个选择: >我可以从基地继承 class并使用关键字 对我的任何方法都“虚拟” 想要我的派生类 覆盖. >我可以用虚方法实现一个抽象类 这样做, >我可 第一个问题在这里,所以希望你们都会轻轻地对我说话!

在过去的几天里,我一直在阅读关于多态的非常多的内容,并试图将它应用到我在c#中所做的事情,似乎有几种不同的方法来实现它.我希望我已经掌握了这个,但即使我没有澄清,我也很高兴.

从我所看到的,我有3个选择:

>我可以从基地继承
class并使用关键字
对我的任何方法都“虚拟”
想要我的派生类
覆盖.
>我可以用虚方法实现一个抽象类
这样做,
>我可以使用界面?

从我所看到的,如果我不需要基础中的任何实现逻辑,那么一个接口给了我最大的灵活性(因为我当然不限制我自己的多重继承等),但如果我需要基础为了能够在派生类正在做的事情之上做一些事情,那么使用1或2将是更好的解决方案?

感谢有关这些人的任何意见 – 本周末我已经阅读了这么多内容,无论是在本网站还是其他地方,我认为我现在理解这些方法,但我只是想以语言特定的方式澄清如果我在右边跟踪.希望我也正确地标记了这一点.

干杯,
特里

解决方法 界面提供最多的抽象;您不依赖于任何特定的实现(如果由于其他原因,实现必须具有不同的基类,则非常有用).

对于真正的多态性,虚拟是必须的;多态性最常与类型子类化相关联……

你当然可以混合两者:

public interface IFoo {    voID bar();}class Foo : IFoo {    public virtual voID bar() {...}}class Foo2 : Foo {    public overrIDe ...}

摘要是一个单独的问题;抽象的选择实际上是:它可以由基类理智地定义吗?如果没有默认实现,则它必须是抽象的.

当存在许多常见的实现细节时,常见的基类可能很有用,并且纯粹通过接口复制是没有意义的;但有趣的是 – 如果实现永远不会因每个实现而有所不同,那么扩展方法提供了一种在接口上公开它的有用方法(这样每个实现都不必这样做):

public interface IFoo {    voID bar();}public static class FooExtensions {    // just a silly example...    public static bool Trybar(this IFoo foo) {        try {             foo.bar();             return true;        } catch {             return false;        }    }}
总结

以上是内存溢出为你收集整理的在c#中实现多态,如何做到最好?全部内容,希望文章能够帮你解决在c#中实现多态,如何做到最好?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1221322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存