c#是否重用没有被GC销毁的现有对象?

本文关键字:对象 是否 GC | 更新日期: 2023-09-27 18:17:14

我有一个名为MyObject的对象。它提供一些业务操作,但不包含任何数据。在源代码中,我初始化它来执行一些操作:

MyObject myObj = new MyObject();

在另一个地方,我用不同的名字初始化一个新的

MyObject BuObj = new MyObject();

如果myObj没有被GC销毁,那么MyObject也会被销毁。所以当我初始化BuObj c#重用MyObject为BuObj而不是初始化一个新的吗?

c#是否重用没有被GC销毁的现有对象?

您需要区分变量 (myObj)和该变量的值所指向的对象。变量永远不会被垃圾收集——只有对象可以。

但是,不,. net不会重用同一个对象:你已经请求了一个新的对象,所以它会创建一个新的。

(在创建空字符串时,有一个的小角情况,其中new操作符恰好返回对现有对象的引用,但您可以忽略它)

不,它将创建一个新的。c#/。Net GC不会重用现有的对象,只会销毁它们。

你所说的叫做对象池;如果你想利用这个概念,你必须自己实现这个功能,或者找到一个现有的库来实现。但是"new"仍然只会创建一个新对象

总之,没有。c#不重用任何对象