我在面试中经常面对这个问题。但我在任何地方都没有得到答案。请帮助我。
答案 0 :(得分:0)
继承和扩展方法完全正交。这只是使用熟悉的.
语法在C#中编写函数的简单方法。如果你使用继承进行代码重用,它们看起来很相似,这往往是不受欢迎的(但要确保你理解为什么 - “最佳”实践是上下文相关的:))。
无论如何,我希望问题是让你说话。不要过于关注“正确”答案是什么 - 只是概述根据你使用的继承,以及使用的扩展方法,以及每种方法的优点和缺点。让对话框运行。
对我来说,例如,扩展方法都是针对接口制作常用功能。也就是说,函数在接口(或类)之上添加功能,同时仅使用其公共接口。这使得该功能可用的界面“大小”小得多,这反过来使得更容易推理。
不同的人使用不同的扩展方法,就像不同的人使用不同的继承。但是,我发现当你从继承转移到组合时,扩展方法变得越来越有用(而且非常自然)。继承是一种非常具体的技术,几乎没有任何理由开始用于几乎所有的东西,但这仍然是Programmers.SE的一个重要主题,就像组合与继承辩论一样:))