当前位置:  开发笔记 > 编程语言 > 正文

C#我可以从另一个类中取消对象

如何解决《C#我可以从另一个类中取消对象》经验,为你挑选了2个好方法。

我有一个在一个类中生成的对象

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,但不认为它会起作用(而且它没有)



1> Marc Gravell..:

请注意,您实际上无法销毁对象; 你受垃圾收集规则的约束.按下,您可以检查IDisposable并调用Dispose(),

你可以使用ref提供的样本,但我不确定有多少意义; 用"obj = null;"清除字段更简单.

ref用法可能会比较混乱,因为这工程对变量 -也就是说,如果你这样做:

var tmp = obj;
DestroyObject(ref tmp);

那么obj仍然是原始价值.除非你有充分的理由,否则我不推荐这种ref方法.



2> Binary Worri..:

你想要的是什么

public void DestroyClass(ref IMyInterface objectToDestroy)
{
    ....
    objectToDestroy = null;
}

这将把你的本地引用设置为null

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有