添加实例以引用另一个实例中的字段

时间:2015-11-06 12:34:24

标签: c# arrays pointers reference

对不起,这个问题可能以不同的形式存在,但我真的在各处搜索过,并没有看到它。

我曾在C ++工作,习惯了指针。我用C#模拟代码替换我的逻辑时遇到问题。

这是我的C#代码:

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

    }

    static void Main(string[] args)
    {

        Parent P1 = new Parent();
        Parent X = new Parent();
        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
    }

我已经看到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
    }

2 个答案:

答案 0 :(得分:0)

你要做的是:

      array[1].A = X;

答案 1 :(得分:0)

它为null,因为它未初始化。

您必须初始化属性。

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());