public class TestClass
{
public int TestNumber;
public string TestName;
public TestClass(string name, int number)
{
TestName = name;
C# is a pass by reference language, when dealing with objects. So when you say Var2 = Var
, you're saying that Var2
now holds the address of whatever address Var1
was holding, effectively making them point to the same object.
One work around is to turn it into a pass by value, like so:
public void Start()
{
Var1 = new TestClass("Me", 1);
Var2 = new TestClass(); // You would need a default constructor, and to use it to prevent the null exception error
Var2.TestNumber = Var1.TestNumber;
Var2.TestName = "aaa";
}
Or, if you will be using more values and this is an overly simplified example, you can use another approach:
public void Start()
{
Var1 = new TestClass("Me", 1);
Var2 = Var1.GetValues();
}
And in your test class:
public testClass GetValues() => return new testClass(TestNumber, TestName);