Так недавно я обнаружил, что вы можете изменить переменную, передав ее другому объекту класса, а затем изменение вновь полученного значения изменит начальное значение. Я должен извиниться, так как знаю, что я очень плохо объяснил это. Вот мой тест, чтобы узнать, работает ли это, и так оно и было.Пропустить справочные проблемы
класс Программа { статический объектA a; статический объект B b;
static void Main(string[] args)
{
a = new objectA();
b = new objectB(a);
Console.WriteLine(a.v + "\n");
Console.WriteLine(b.b.v + "\n");
a.v = 5;
Console.WriteLine(a.v + "\n");
Console.WriteLine(b.b.v + "\n");
b.b.v = 7;
Console.WriteLine(a.v + "\n");
Console.WriteLine(b.b.v + "\n");
Console.ReadLine();
}
}
class objectB
{
public objectB(objectA b)
{
this.b = b;
}
public objectA b;
}
class objectA
{
public objectA()
{
v = 0;
}
public int v;
}
Я играл примерно с этим в проекте с участием частиц и двигатель частиц, и она работала прекрасно, но потом я пытался что-то другое, и я немного потерял.
У меня есть класс А, который наследует класс B, который наследуется абстрактного класса C.
Основной класс инициализирует класс А и передает его значение, которое он хранит в классе С.
В отличие от моего теста, когда я редактирую значение в основном классе, значение не изменяется в классе С.
class MainExample {
private vector2 position = new vector2(175, 135);
private ship_ShipName ship_();
...
public MainExample()
{
ship_ = new ship_ShipName(position);
...
}
}
class ship_ShipName : Ship
{
public ship_ShipName(vector2 position)
{
this.position = position; //this.position being the position from Module.cs
}
}
class Ship : Module { ... }
abstract class Module { vector2 position; }
Глядя на мой двигатель частиц теперь я вижу, что это не абстрактно, так что эта проблема должна относиться к этому. Любое понимание очень ценится, и я прав, чтобы думать, что я описываю, это «передача по ссылке»? Благодарю.
Вы передаете все по значению в коде выше. –
Если вы хотите, чтобы мы проанализировали, почему ваша программа делает то, что она есть, тогда покажите ее нам. Не видя, что вы делаете, мы можем только догадываться, почему вы видите результаты, которых вы не ожидаете. – Servy