es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer correctamente la edición de miembros de clase mediante setters

Estoy intentando hacer un método setter para la propiedad pública del miembro privado “age”. Funciona de tal manera que, si la edad que estás intentando ingresar es menor que cero, el programa debería establecerla en cero y darte un mensaje básico. Sin embargo, este método setter permitirá cualquier número negativo. Si tratas de editarlo en el constructor, el método setter ni siquiera se activará. Pero si creas una instancia de la clase “age” y luego intentas editar esa instancia, sí puedes. Sin embargo, permitirá pasar números menores a cero y enviará el mensaje “Viable”, lo que significa que es un número viable. Aquí está la clase “Person” donde se encuentra el miembro “age”, la propiedad, el constructor, etc.

Aquí está el método principal:

Cualquier ayuda sería muy apreciada. ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la condición del método Setter. Actualmente, comprueba si “age” (que es la variable de miembro privada) es mayor o igual a 0, en lugar de comprobar si “value” (que es el valor que se establece) es mayor o igual a 0.

    Para solucionarlo, cambie la condición if en el método setter a:

    if (value >= 0)
    

    Esto asegurará que se establezcan en 0 todos los valores negativos que se pasen a la propiedad de edad y se muestre el mensaje “No viable”.

    También tenga en cuenta que si desea que el método Setter siempre se active (incluso en el constructor), puede utilizar el campo de miembro privado “age” en lugar de la propiedad pública “Age” en el constructor. Por ejemplo:

    public Person(int age)
    {
        this.age = Math.Max(age, 0);
    }
    

    Esto utiliza el método Math.Max para garantizar que la edad sea al menos 0 y se establezca directamente en el campo privado “age” en lugar de pasar por la propiedad pública “Age”.

Comments are closed.