如何删除对象b,将对象设置为a之后,还是不删除对象a?

时间:2012-08-14 09:06:00

标签: c#

我试图这样做:

   Data4JS D4JS = (Data4JS)GlobalHelper.GetCurrentSession()["Data4JS"];
    GlobalHelper.GetCurrentSession()["Data4JS"] = null; 
    return D4JS;

问题是它将D4JS设置为null,我真的不想将我的代码分成几个方法调用,我怎么能轻易实现这个?

3 个答案:

答案 0 :(得分:2)

只需使用new关键字,这样就不会使用引用或克隆对象方法。

Deep cloning objects

答案 1 :(得分:0)

在这种情况下,使用序列化进行深层复制。

答案 2 :(得分:0)

假设您的对象足够简单且具有公共属性,并且您需要的只是属性中的值,您可以执行与此类似的操作:

Data4JS D4JS = (Data4JS)GlobalHelper.GetCurrentSession()["Data4JS"];
Data4JS result = new Data4JS
{
    //Set your result object to the one in 
    //session by manually copying over the property values
    Property1 = D4JS.Property1;
};

GlobalHelper.GetCurrentSession()["Data4JS"] = null; 

return result;

否则请使用Freeman建议的更清洁的方式来实现您的需求。