【发布时间】:2016-03-29 14:31:09
【问题描述】:
我在面试中经常遇到这个问题。但我在任何地方都没有得到答案。请帮助我。
【问题讨论】:
-
密封类呢?
-
扩展方法是添加到语言中的语法糖,使 Linq 调用看起来像是内置在所有实现
IEnumerable<>等的类中。也就是说,这是一种让你将方法“添加”到您没有源代码或已密封的类中。
标签: c#
我在面试中经常遇到这个问题。但我在任何地方都没有得到答案。请帮助我。
【问题讨论】:
IEnumerable<> 等的类中。也就是说,这是一种让你将方法“添加”到您没有源代码或已密封的类中。
标签: c#
继承和扩展方法是完全正交的。这只是使用熟悉的. 语法在 C# 中编写函数的一种简单方法。仅当您使用继承进行代码重用时,它们才看起来相似,这往往会令人不悦(但请确保您了解为什么 - “最佳”实践是上下文相关的 :))。
无论如何,我希望这个问题能够让你说话。不要过分关注“正确”答案是什么——只需概述根据您的用途使用什么继承,使用什么扩展方法,以及它们各自的优点和缺点。让对话框运行。
例如,对我来说,扩展方法都是关于针对接口创建通用函数。也就是说,这些函数在接口(或类)之上添加功能,同时仅使用其公共接口。这使得函数可用的接口的“大小”要小得多,从而更容易推理。
不同的人以不同的方式使用扩展方法,就像不同的人以不同的方式使用继承一样。然而,我发现当你从继承转向组合时,扩展方法变得越来越有用(而且真的很自然)。继承是一种非常具体的技术,几乎毫无理由地开始用于几乎所有事情,但无论如何这已经是 Programmers.SE 上的一个大话题,就像组合与继承的辩论一样 :))
【讨论】: