如果已经存在继承,为什么我们需要扩展方法?

时间:2016-03-29 14:31:10

标签: c#

我在面试中经常面对这个问题。但我在任何地方都没有得到答案。请帮助我。

1 个答案:

答案 0 :(得分:0)

继承和扩展方法完全正交。这只是使用熟悉的.语法在C#中编写函数的简单方法。如果你使用继承进行代码重用,它们看起来很相似,这往往是不受欢迎的(但要确保你理解为什么 - “最佳”实践是上下文相关的:))。

无论如何,我希望问题是让你说话。不要过于关注“正确”答案是什么 - 只是概述根据你使用的继承,以及使用的扩展方法,以及每种方法的优点和缺点。让对话框运行。

对我来说,例如,扩展方法都是针对接口制作常用功能。也就是说,函数在接口(或类)之上添加功能,同时仅使用其公共接口。这使得该功能可用的界面“大小”小得多,这反过来使得更容易推理。

不同的人使用不同的扩展方法,就像不同的人使用不同的继承。但是,我发现当你从继承转移到组合时,扩展方法变得越来越有用(而且非常自然)。继承是一种非常具体的技术,几乎没有任何理由开始用于几乎所有的东西,但这仍然是Programmers.SE的一个重要主题,就像组合与继承辩论一样:))