添加实例以引用另一个实例中的字段
对不起,这个问题可能以不同的forms存在,但我真的在各处搜索,看不到它。
我曾在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 }
你要做的是:
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; } }
和
Parent X = new Parent(); Parent P1 = new Parent(X, new Parent());