对象引用问题
本文关键字:问题 对象引用 | 更新日期: 2023-09-27 17:51:02
我有两个类命名为Parent
和Child
。Parent
类包含对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