想象一下,您有一个具有多个属性的对象。其中一个属性是字符串:
private class MyObject
{
public string PropertyOne {get; set;}
...
}
我现在创建一个新的对象,基于
MyObject
的内容:private class MySecondObject
{
public string PropertyOneCopy {get; set;}
public MySecondObject(MyObject myObject)
{
this.PropertyOneCopy = myObject.PropertyOne;
....
}
}
在调用场景中,我们有以下内容:
private class Scenario
{
private MySecondObject _mySecondObject;
public void Go()
{
MyObject myObject = new MyObject();
myObject.PropertyOne = "Hello, World!";
_mySecondObject = new MySecondObject(myObject);
}
}
原始的MyObject实例现在超出范围。 _mySecondObject是长期存在的。
我有的问题是...原始的MyObject会被垃圾回收吗?如果我使用this.PropertyOneCopy = String.Copy(myObject.PropertyOne);
,它会被垃圾回收吗?
MySecondObject
不持有该引用,它仅在构造函数的持续时间内使用它。 - Adam HouldsworthMySecondObject
存储了对MyObject
的引用?它只存储一个字符串。 - user395760