C#我可以从另一个类中取消对象
发布时间:2020-12-15 19:47:57 所属栏目:百科 来源:网络整理
导读:我有一个在一个类中生成的对象 public class CreatingClass{ public T CreateObjectT(Dictionarystring,object parameters) where T : IMyInterface,new() { .... } public void DestroyObject(IMyInterface objectToDestroy) { .... }} 我从客户端类调用此
我有一个在一个类中生成的对象
public class CreatingClass { public T CreateObject<T>(Dictionary<string,object> 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<MyClass>(parameters); } private void AFunctionToDeleteMyObject() { CreatingClass.DestroyObject(obj); Assert.IsNull(obj);//Doesn't fail } } 我曾尝试过objectToDestroy = null,但不认为它会起作用(而且它没有) 解决方法
请注意,您实际上无法销毁对象;你受垃圾收集规则的约束.推送时,您可以检查IDisposable并调用Dispose(),
你可以使用提供的参考样本,但我不确定有多少意义;用“obj = null;”清除字段更简单. ref的使用可能会让人感到困惑,因为它适用于变量 – 即如果你这样做: var tmp = obj; DestroyObject(ref tmp); 然后obj仍然是原始值.除非你有充分的理由,否则我不推荐使用ref方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |