加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读