C# 将实例添加到另一个实例中的引用字段
对不起,这个问题可能以不同的形式存在,但我真的到处都找了,没有看到 我已经用C++工作了,而且我也用指针。我在用C#模拟代码替换逻辑时遇到了问题 这是我的C#代码: 我已经看到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
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());