对不起,这个问题可能以不同的形式存在,但我真的在各处搜索过,并没有看到它。
我曾在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
}
答案 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());