C#是否重用未被GC销毁的现有对象?

Lin*_*inh 1 c# garbage-collection c#-3.0

我有一个名为MyObject的对象.它提供了一些商务操作,不包含任何数据.在源代码中,我初始化它来做一些操作:

MyObject myObj = new MyObject();
Run Code Online (Sandbox Code Playgroud)

在其他地方我初始化一个不同名称的新的:

MyObject BuObj = new MyObject();
Run Code Online (Sandbox Code Playgroud)

如果myObj没有被GC销毁,那么MyObject也是如此.所以当我初始化BuObj时,C#重用MyObject for BuObj而不是初始化一个新的?

Jon*_*eet 5

您需要区分变量(myObj)和变量值引用的对象.一个变量不能被垃圾收集-只有对象.

但不,.NET不会重用同一个对象:你已经要求一个新对象,所以它会创建一个新对象.

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

  • @PraveenLearnsEveryday:好吧,包含对象的引用.引用的形式可以是内存地址,但逻辑上它只是"导航到对象的某种方式". (2认同)