C# 将实例添加到另一个实例中的引用字段

C# 将实例添加到另一个实例中的引用字段,c#,arrays,pointers,reference,C#,Arrays,Pointers,Reference,对不起,这个问题可能以不同的形式存在,但我真的到处都找了,没有看到 我已经用C++工作了,而且我也用指针。我在用C#模拟代码替换逻辑时遇到了问题 这是我的C#代码: 我已经看到C#中有指针,但有更好的方法吗?谢谢 编辑: 我的问题不完整。我很抱歉。代码如下: abstract class Parent { protected virtual int foo(); } public class Son : Parent { pub

对不起,这个问题可能以不同的形式存在,但我真的到处都找了,没有看到

我已经用C++工作了,而且我也用指针。我在用C#模拟代码替换逻辑时遇到了问题

这是我的C#代码:

我已经看到C#中有指针,但有更好的方法吗?谢谢

编辑:

我的问题不完整。我很抱歉。代码如下:

abstract class Parent
    {

        protected virtual int foo();
    }

    public class Son : Parent
    {
        public Parent A { get; set; }
        public Parent B { get; set; }

        protected override int foo()
        {
             return base.foo();
        }

    }

    public class Daughter : Parent
    {
        public Parent A { get; set; }
        public Parent B { get; set; }
    }

    static void Main(string[] args)
    {

        Son P1 = new Son();
        Parent X = new Daughter();
        Parent[] array = new Parent[10];
        array[0] = P1;
        array[1] = P1.A;
        array[2] = P1.B;   

        array[1]= X;

        //I expect P1.A to be X but it is null
    }

你想做的是:

      array[1].A = X;

它为null,因为它未初始化

您必须初始化属性

class Parent
{
    public Parent A { get; set; }
    public Parent B { get; set; }

    Parent(Parent a, Parent b)
    {
        A = a;
        B = b;
    }
}


父项P1=新父项();P1.A=新的父项();P1.B=新的父对象()@TimSchmelter你是对的我变了it@Mariusz对不起,我没有完全解释这个问题。我现在编辑我希望数组中的位置是子类未来实例的持有者,并在持有它的对象中更改。
class Parent
{
    public Parent A { get; set; }
    public Parent B { get; set; }

    Parent(Parent a, Parent b)
    {
        A = a;
        B = b;
    }
}
Parent X = new Parent();
Parent P1 = new Parent(X, new Parent());