我正在阅读有关垃圾收集器的信息。我想知道垃圾收集器在面向对象编程中的用途是什么?我们也可以手动删除对象而不是垃圾收集器。然后我们有垃圾收集器的一代,它具有 N、N+1、N+2 的角蛋白水平。他们真的那么重要吗?
问问题
2673 次
5 回答
6
垃圾收集与面向对象编程无关。
C# 是一种托管语言。这意味着开发人员无需担心(至少不应该担心)内存管理。这就是垃圾收集器如此重要的原因。
于 2012-10-11T18:37:17.530 回答
0
除非您正在编写unsafe
代码,否则您不会在 C# 中释放内存。
于 2012-10-11T18:39:36.503 回答
0
垃圾收集器和面向对象编程是完全不同的概念。您可能会混淆它们,因为许多 OOP 语言都实现了某种形式的垃圾收集器。
垃圾收集是清理未使用资源的过程 - 意味着超出范围的对象等。它允许程序员(在大多数情况下)不必担心自己进行清理。
C# 是一种托管语言 - 这意味着它实现了垃圾收集器等。
于 2012-10-11T18:42:56.623 回答
0
这两个概念完全不相关。
你可以拥有一个而不是另一个。您可以使用垃圾收集语言删除对象,但无法回收内存。这是我使用过的所有语言中垃圾收集器的职责
为了证明它们是完全不同的概念,这里有一个带有/不带有 oop/gc 的语言的简短列表:
垃圾收集器和面向对象:
- C#
- 爪哇
- 无数人
面向对象,但不是垃圾收集:
- C++
垃圾收集但不是面向对象:
- JavaScript*
既不收集垃圾,也不面向对象:
- C
*虽然 JavaScript 有对象,但它不像 C++ 和 Java 那样面向对象。我将其称为基于原型的语言而不是面向对象的语言。
于 2012-10-11T18:44:58.047 回答