C#中的抽象

时间:2018-03-19 19:22:41

标签: c# .net

我正在努力学习C#的高级主题,我目前已经16岁并且自学成才,所以我从未真正了解过C#的高级主题,尽管我并不认为这是一个高级主题。 / p>

我想知道是否有人能向我解释抽象是什么?我已经做出了自己的结论,所以如果有人可以做好准备并且可能接受我可能错误的部分?

网上资源不多,对我来说很有意义,但看了很多不同的资源,给我画了一个含糊但却相当确定的图片。

  

抽象只是隐藏方法,属性,字段和   程序员从不调用的类中的所有其他内容   程序员真的不在乎。我猜这意味着一切   应该隐藏应该是私人的吗?我真的不认为这是一个   您需要学习的主题,因为这是每个人的工作   无论如何,我错过了什么吗?我也不明白这个推理   隐藏它,它应该是隐藏的,抽象只是一个   编码惯例/编码实践,每个人都应该遵循,而不是   话题,我说对了吗?如果是这样,我不明白为什么它如此重要,是个人偏好吗?这只是因为程序员不想看到他们永远不会使用的无关紧要的东西吗?希望有人可以帮助我。

我想到了“抽象”这个词,我觉得我没事。

  

存在的排序但是然后排序不存在,它存在但是作为思想,存在   代码存在但不可见。

1 个答案:

答案 0 :(得分:2)

抽象的一般概念(至少在编程中)使得比看起来更容易。采用复杂的过程或类,将其包装在更易于使用的东西中,并创建一个抽象。你已经抽象出了丑陋的细节,而只需要处理漂亮的表面。在OOP中,定义更具体一些,但一般来说,这就是你所说的。抽象出你不需要的东西。

例如,查看用于打开文件对话框的Win32 API或ShellExecute。然后看看类似的C#代码来做同样的事情(选择一个UI平台),你会发现Win32 API代码要复杂得多(但功能也要强大得多)。 C#版本可以被视为抽象,而抽象又调用Win32 API版本。同样,任何现代编程语言都可以被认为是编写程序集/机器代码的抽象。

我推荐Joel Spolsky的一些阅读,在这种情况下是漏洞抽象法则:https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/