Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用问题_C#_Object_Reference_Null - Fatal编程技术网

C# 对象引用问题

C# 对象引用问题,c#,object,reference,null,C#,Object,Reference,Null,我有两个班,分别是Parent和Child。父类包含对子类的引用。当我创建父类的实例时,我将传递一个子对象的实例 据我所知,我们将此子实例作为参考传递。然后我将这个父对象缓存在外部缓存中。然后我从另一个系统中检索这个对象。我认为在那个系统中,子对象的实例可能不存在 根据理论,“\u child”包含堆中对象的引用,而不是实际对象,对吗 试想一下,在服务器场场景中,您的对象实例应该对其他系统可用,并且系统一旦生成该对象就应该可用 public class Parent { public C

我有两个班,分别是Parent和Child。父类包含对子类的引用。当我创建父类的实例时,我将传递一个子对象的实例


据我所知,我们将此子实例作为参考传递。然后我将这个父对象缓存在外部缓存中。然后我从另一个系统中检索这个对象。我认为在那个系统中,子对象的实例可能不存在

根据理论,“\u 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);
}
现在,如果我尝试在另一个系统或应用程序中检索此父对象,会发生什么

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

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

NET Framework有各种内置序列化程序,允许不同类型的序列化,例如

Xml-, JSON-,
这看起来不像C代码。我认为在那个系统中,子对象的实例可能不存在。它是否存在?您似乎在问一个问题,您可以通过调查自己的系统来回答这个问题。您从哪里获得ExternalCache对象?您是否尝试编译此程序?如果是,您得到了哪些编译器错误?如果没有编译器错误,您可以发布您正在使用的确切代码吗?当您提供理论概念时,请提供实际工作的代码。否则,很难区分哪些是真正的错误,哪些是刚刚在不可编译的代码示例中犯的错误。它不需要是实际的代码,只需要有问题的代码和正确的代码。