对象引用问题

本文关键字:问题 对象引用 | 更新日期: 2023-09-27 17:51:02

我有两个类命名为ParentChildParent类包含对Child类的引用。当我创建Parent类的实例时,我将传递Child对象的实例。

据我所知,我们通过这个Child实例作为参考。然后我将这个Parent对象缓存在外部缓存中。然后我从另一个系统中检索这个对象。我认为在该系统中,Child对象的实例可能不存在。

根据理论'_child'包含对象在堆中的引用,而不是实际对象,我是对的吗?

试想在服务器场场景中,你的对象实例应该对其他系统可用,并且系统一旦生成该对象

public class Parent
{
    public Child _child = null;
    public Parent(Child c)
    {
        _child=c;   
    }
}
public class Child
{
    public string Name;
}
static void Main()
{
    Child c = new Child();
    c.Name="vivek";
    Parent p = Parent(c);
    string key = ExternalCache.Add(p);
}

现在,如果我试图在另一个系统或应用程序中检索这个Parent对象会发生什么?

static void Main()
{
   Parent p = (Parent)ExternalCache.Get(Key)
   Console.WriteLine(p._child.Name);
}

对象引用问题

将对象的相同引用传递给不同的机器是不可能的,因为它们不会在相同的内存空间中运行,所以即使可以,这些引用也没有任何用处。然而,你能做的是序列化对象图。在另一端重新构造对象——这被称为对象序列化,或者通常只是序列化

. net框架有各种内置的序列化器,允许不同类型的序列化,例如

  • Xml - DataContractSerializer, XmlSerializer
  • JSON - DataContractJsonSerializer, JavaScriptSerializer