我正在使用文章从互联网上阅读OOPs Concepts。
在其中一篇文章中,我读过以下有关抽象的内容:
如果我们在“Billing”类中有一个名为“CalculatePrice”的方法, 我们并不关心里面的计算 “CalculatePrice”方法。我们只需传递必要的参数即可获得 输出。我们隐藏了“计算价格”的实现。
所以我的问题是:在C#中,我们使用dll和命名空间并调用特定的方法。我们可以这么说,dll和名称空间是抽象的概念吗?
由于
答案 0 :(得分:3)
没有。
您通常应该将dll文件和命名空间视为组织项目的方法。
CalculatePrice
的抽象只是在方法中“隐藏”它的逻辑。当另一段代码调用该方法时,它并不关心它内部发生了什么 - 它只对结果感兴趣。
C#(和.Net)中的抽象是使用类,接口,抽象类以及方法和属性之类的东西制作的在这些中定义和/或实现的。
您应该关注这些概念,以及它们如何在不同的“模式”中一起使用以解决各种类型的问题。
在示例中稍微扩展一下:如果在接口中定义了CalculatePrice
,那么调用代码将“与”该接口“对话”,而不关心它背后的内容。该接口的实现 - 实际执行逻辑的代码 - 可以是任何东西。它可以改变,并且不断变化,只要它满足接口中定义的要求(“合同”),因为这将允许调用代码继续使用它... 是如何抽象适用于C#。
答案 1 :(得分:1)
有趣的是,有四个答案都说“不”。实际上,答案是“有时”。如果CalculatePrice
的实现依赖于另一个标记为internal的类,那么它的汇编确实构成了抽象的一部分,因为内部类只能被该汇编中的其他类访问。
.NET中的命名空间不构成任何抽象的一部分。在其他语言中,他们可以将internal
绑定到名称空间,但这不是.NET语言的工作方式。
这种信息隐藏是最基本的抽象形式。 C#最强大的抽象工具是接口,支持依赖注入以及将方法作为值处理。如果您有兴趣了解C#中有关抽象的更多信息,那么它们就是需要关注的三个方面。
答案 2 :(得分:0)
所以我的问题是:在C#中,我们使用dll和命名空间并调用特定的方法。我们可以这么说,dll和名称空间是抽象的概念吗?
没有