1

我正在使用文章从互联网上阅读 OOPs 概念。

在其中一篇文章中,我阅读了以下关于抽象的内容:

如果我们在“Billing”类中有一个名为“CalculatePrice”的方法,我们就不关心“CalculatePrice”方法中的计算。我们只需传递必要的参数并获取输出。我们隐藏了“计算价格”的实现。

所以我的问题是:在 C# 中,我们使用 dll 和命名空间并调用特定的方法。我们可以说,dll 和命名空间是抽象的概念吗?

谢谢

4

3 回答 3

3

不。

您通常应该将 dll 文件和命名空间视为组织项目的方式。

的抽象CalculatePrice只是简单地将其逻辑“隐藏”在方法中。当另一段代码调用该方法时,它并不关心其中发生了什么——它只对结果感兴趣。

C#(和一般的 .Net)中的抽象是使用ClassesInterfacesAbstract Classes以及在这些中定义和/或实现的方法和属性之类的东西进行的。

您应该关注这些概念,以及它们如何以不同的“模式”一起使用以解决各种类型的问题。

稍微扩展一下您的示例:如果CalculatePrice在接口中定义,则调用代码将“与”该接口“对话”,而不关心它背后的内容。该接口的实现——实际执行逻辑的代码——可以是任何东西。只要它满足接口中定义的要求(“合同”),它就可以改变并不断改变,因为这将允许调用代码继续使用它......就是抽象在 C# 中的工作方式。

于 2013-11-12T09:59:22.623 回答
1

有趣的是,有四个答案都说“不”。实际上,答案是“有时”。如果 的实现CalculatePrice依赖于另一个标记为内部的类,那么它的程序集确实构成了抽象的一部分,因为内部类只能由该程序集中的其他类访问。

.NET 中的命名空间不构成任何抽象的一部分。在其他语言中,它们可以internal绑定到名称空间,但这不是 .NET 语言的工作方式。

这种信息隐藏是最基本的抽象形式。C# 最强大的抽象工具是接口,支持依赖注入并将方法视为值。如果您有兴趣了解更多关于 C# 中的抽象,它们是需要关注的三个领域。

于 2013-11-12T10:04:41.827 回答
0

所以我的问题是:在 C# 中,我们使用 dll 和命名空间并调用特定的方法。我们可以说,dll 和命名空间是抽象的概念吗?

不。

于 2013-11-12T09:54:44.977 回答