How to pass objects between classes

What I'm trying to do here is pass the same copy of class ( class A) to another class ( class B), but class Bset to class A.

Using the statement newin class Bwill not work, because it will cause an infinite loop, as well as creating a new instance when I want to use variables from the 1st instance class A.

I know about object.equals(), but I can’t use it until I define the object class Ain class B. Just use object.equalsleads to a null reference.

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
}

As I said, I want to avoid creating a new copy of class A, because I want the values ​​in class A to be set.

I tried using the method for this, but still getting a null reference.

+4
4

Pass 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;
    }
}

, .Equals(). , , , /.

+3

75%. , .equals(this) = this :

_class_B._class_A = this;

ClassA ClassB, , ClassB ClassA, this, .

this to ClassB, :

  • this ClassB
  • this ClassB.

, = , Equals() , .

public class ClassA
{
    public ClassB MyClassB1 { get; set; }
    public ClassB MyClassB2 { get; set; }

    public ClassA()
    {
        // pass `this` to the constructor
        this.MyClassB1 = new ClassB(this);

        // pass `this` directly to a property in `ClassB`
        this.MyClassB2 = new ClassB();
        this.MyClassB2.MyClassA = this;
    }
}

public class ClassB
{
    public ClassA MyClassA { get; set; }

    public ClassB() { }

    public ClassB(ClassA classA)
    {
        // do property assignment in the constructor
        this.MyClassA = classA;
    }
}

" - " .

using System;   
public class Program
{
    public static void Main()
    {
        var classA = new ClassA();

        if(classA.Equals(classA.MyClassB1.MyClassA) &&
           classA.Equals(classA.MyClassB2.MyClassA) &&
           classA.MyClassB1.MyClassA.Equals(classA.MyClassB2.MyClassA))
        {
            Console.WriteLine("They are the same object.");
        }
    }
}

, , , ClassB ClassA . .

+1

Try the following:

public class A
{
    public B Instance_B;

    public A(B b)
    {
         Instance_B = b;
    }
}

public class B
{
    public A Instance_A;

    public B()
    {
         Instance_A = new A(this);
    }
}
0
source

Use get; set;

In Class A:

public partial class class_A : Form
{
    Class_B B = new Class_B();
    B.Class_A = this;
    public Int32 var;
}   

Then in Class B:

public class class_B
{
    Class_A A { get; set; }
    // code
}
-2
source

All Articles