/// <summary> /// Devuelve una copia de este objeto. /// </summary> public override object Clone() { // Como los campos son invariables entonces no necesitamos // hacer copias de ellos. List <Campo> camposNuevos = new List <Campo>(Campos.Count); foreach (Campo campo in Campos) { camposNuevos.Add(campo); } Pdi clone = new Pdi(ManejadorDeMapa, Número, Clase, camposNuevos); return(clone); }
/// <summary> /// Retorna una variable lógica indicando si un PDI dado /// tien la misma información que este PDI. /// </summary> /// <param name="elPdi">El PDI dado.</param> public bool TieneLaMismaInformación(Pdi elPdi) { bool tieneLaMismaInformación = false; // El PDI tiene la misma información si: // - El nombre es igual. // - El tipo es igual. // - Las coordenadas son iguales. // - La información de los campos son iguales. if ((Nombre == elPdi.Nombre) && (Tipo == elPdi.Tipo) && (Coordenadas == elPdi.Coordenadas) && (Campos.Count == elPdi.Campos.Count)) { // Ahora hay que asegurarse que todos lo campos son iguales. tieneLaMismaInformación = true; foreach (Campo campo in Campos) { bool encontróCampoIgual = false; foreach (Campo campoAComparar in elPdi.Campos) { if (campo == campoAComparar) { encontróCampoIgual = true; break; } } // Si no encontró un campo igual entonces el PDI // no contiene la misma información. if (!encontróCampoIgual) { tieneLaMismaInformación = false; break; } } } return(tieneLaMismaInformación); }