Есть ли причина, по которой мой второй объект получает значение моего первого объекта? - PullRequest
0 голосов
/ 02 апреля 2019

Когда я вставляю второй объект (дочерний элемент), мне нужно назначить его родителю имя его дочернего элемента (уже имеющего дочерний объект, у которого есть имя родителей в свойстве), но когда я вызываю родительский объект всегда возвращает дочерний объект.

Я использую Hashtable для хранения объектов "Cargo".

// Hashtable(key,value)
TablaCargos(CargoObject.Name, CargoObject)

И каждый груз должен иметь список родителей и детей

Часть моего класса Cargo

class Cargo {
  private string nombre;
  private string codigo;
  private string padre;
  private List<string> hijos = new List<string>();

  public Cargo() {
    nombre = "";
    codigo = "";
    padre = "";
    hijos = new List<string>();
  }

  //getter and setters
}

Моя форма

Cargo cargo = new Cargo();
Cargo cargoHijo = new Cargo();
Cargo cargoPadre = new Cargo();
Hashtable TablaCargos = new Hashtable();
string Root = "";

private void btnAgregar_Click(object sender, EventArgs e)
{
  cargo.Nombre = txtNombre.Text;
  cargo.Codigo = txtCodigo.Text;
  cargo.Padre = txtPadre.Text;

  TablaCargos.Add(txtNombre.Text, cargo);

  Ordenamiento(txtNombre.Text);
}

private void Ordenamiento(string cargoActual) {

  cargoHijo = (Cargo)TablaCargos[cargoActual];

  if (cargoHijo.Padre == "") {
    // THIS IS A PARENT
    Root = cargoActual;
  } else {
    // THIS IS A CHILD
    AsignarPadre(cargoHijo.Padre, cargoHijo.Nombre);
}

private void AsignarPadre(String Padre, String Hijo)
{
  // THE PROBLEM IS HERE, CLEARLY I SEND THE Parent's KEY

  cargoPadre = (Cargo)TablaCargos[Padre];

  // BUT IN THE NEXT LINE cargoPadre TAKES THE VALUE OF THE CHILD
  // THE SAME VALUE OF cargoHijo

  cargoPadre.Hijos.Add(Hijo);
}

Я ожидаю присвоить имя ребенка его дочернему свойству, но ребенок его принимает.

Может быть, я скучаю по инстанции или, не знаю

1 Ответ

0 голосов
/ 07 апреля 2019

Проблема была решена с помощью этой строки cargo = new Cargo(); в начале btnAdicionar_Click.Спасибо всем за ваше время и советы.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...