因此,我要在此处执行的操作是将一个类(class A)的相同副本传递给另一个类(class B),但class B在中实例化class A。
当我希望能够使用的第一个实例中的变量时,使用newin中的语句class B将不起作用,因为它将导致无限循环,并会创建该实例的新实例class A。
我知道,object.equals()但是直到在中定义class A的对象后,我才能使用它class B。仅object.equals在空引用中使用结果。
public partial class class_A : Form
{
public class_B _class_B = new class_B;
public Int32 var;
private void setclassA()
{
_class_B._class_A.equals(this);
}
}
public class class_B
{
public class_A _class_A; // I know this is null
// code
}
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我想避免实例化类A的新副本,因为我希望设置类A中的值。
我尝试使用一种方法来做到这一点,但仍然获得空引用。
传入A的构造函数B:
public class A
{
private B _b;
public A()
{
_b = new B(this);
}
}
public class B
{
private A _a;
public B(A a)
{
_a = a;
}
}
Run Code Online (Sandbox Code Playgroud)
正如评论中提到的,您完全误解了.Equals()。它用于比较两个对象是否相等,而不是克隆/传递引用。