在传统的C#代码一些代码审查我一直在做最近我已经看到了很多的例子是这样的:传递父对象作为父对象交互的参考邪恶的做法?
class ManagerParentClass
{
public string CustomProperty{get;set;}
public void Log(string message);
void DoABunchOfTasks()
{
new SomethingService().DoSomething(this);
}
}
下列要求:
public class SomethingService
{
ManagerParentClass _manager;
void DoSomething(ManagerParentClass manager)
{
_manager = manager;
// do something
_manager.CustomProperty = "hello world";
_manager.Log("said hello world");
}
}
虽然这工作正常上表面上,我担心这是一种反垃圾回收模式,可能会导致垃圾回收。
这是否会打破.Net的世代垃圾回收器能够正确地清理父对象或子对象或其他消极对象?
如果GC未被使用,GC将不会保留根。我认为这只是糟糕的编程。这些课程有混合的责任。奇妙的问题,但。 –
父子引用在任何体面参与的对象图中都很常见。这是.NET GC的祝福。过去,我们必须使用'CopyMemory'和'ObjPtr'来打破VB6中不可宽恕的内存管理系统中的循环引用。 – tcarvin