我有一个在一个类中生成的对象
public class CreatingClass { public T CreateObject(Dictionary parameters) where T : IMyInterface, new() { .... } public void DestroyObject(IMyInterface objectToDestroy) { .... } }
我从客户端类调用此函数,然后有时需要通过创建类通过我的应用程序使其无效.
我可以做以下事情
public class ClientClass { MyObject obj; CreatingClass creatingClass = new CreatingClass(); private void AFunctionToCreateMyClass() { obj = creatingClass.CreateObject(parameters); } private void AFunctionToDeleteMyObject() { CreatingClass.DestroyObject(obj); Assert.IsNull(obj);//Doesn't fail } }
我曾尝试过objectToDestroy = null,但不认为它会起作用(而且它没有)
请注意,您实际上无法销毁对象; 你受垃圾收集规则的约束.按下,您可以检查IDisposable
并调用Dispose(),
你可以使用ref
提供的样本,但我不确定有多少意义; 用"obj = null;"清除字段更简单.
该ref
用法可能会比较混乱,因为这工程对变量 -也就是说,如果你这样做:
var tmp = obj; DestroyObject(ref tmp);
那么obj
仍然是原始价值.除非你有充分的理由,否则我不推荐这种ref
方法.
你想要的是什么
public void DestroyClass(ref IMyInterface objectToDestroy) { .... objectToDestroy = null; }
这将把你的本地引用设置为null