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.

Get/Set de Winforms entre clases causando error – Error de Referencia de Objeto.

Teniendo problemas para resolver este. Puede que solo esté agotado, la verdad es que llevo horas con esto. Soy nuevo en las clases en C# y me está dando una paliza tratando de pasar datos entre clases. Sé que me faltan pasos, pero la documentación de Microsoft no está siendo muy útil con mi pregunta, así que aquí va.

Intentando pasar valores desde una clase a otra. El código de error que estoy recibiendo es CS0120.

Este es el formato de lo que estoy usando dentro de la primera clase:

private void btn_Compute_Click(object sender, EventArgs e)
    {
        decimal dL = Validator(box_Left.Text);
        decimal dR = Validator(box_Right.Text);
        decimal Answer = 0;
        string op = "";
        if (rad_Add.Checked == true)
        {
            MathFirstClass.Left = dL;
            MathFirstClass.Right = dR;
            op = " + ";
        }
}

y el código dentro de la otra clase al que estoy tratando de enviar los datos se ve así:

decimal left;
decimal right;
decimal Answer;

public decimal Left
{
    get { return left; }
    set { left = value; }
}

public decimal Right
{
    get { return right; }
    set { right = value; }
}

public decimal Add_Operands
{
    get
    {
        Answer = Left + Right;
        return Answer;
    }
}

Además, si alguien quiere informarme sobre cómo enviar la respuesta de vuelta a la primera clase, también sería de gran ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando pasar valores de una clase a otra en C# y estás encontrando un código de error CS0120. Un paso que puede estar faltando es crear una instancia de la otra clase para acceder a sus propiedades y métodos.

    Para crear una instancia de la otra clase, puedes hacer algo así:

    MathOtherClass otherClass = new MathOtherClass();
    

    Luego, puedes acceder a sus propiedades y métodos utilizando el nombre de la instancia. Por ejemplo:

    otherClass.Left = dL;
    

    En cuanto a enviar la respuesta de vuelta a la primera clase, una forma de hacerlo es crear un método en la primera clase que acepte la respuesta como parámetro. Por ejemplo:

    public void ShowAnswer(decimal answer)
    {
        // Hacer algo con la respuesta, como mostrarla en una etiqueta
        lbl_Answer.Text = answer.ToString();
    }
    

    Luego, en la segunda clase, puedes llamar a este método y pasar la respuesta de esta manera:

    MathFirstClass firstClass = new MathFirstClass();
    firstClass.ShowAnswer(Add_Operands);
    

    Esto debería mostrar la respuesta en la etiqueta designada en la primera clase.

    Recuerda también verificar otros errores o pasos faltantes en tu código, y revisar la sintaxis y lógica para asegurarte de que todo sea preciso. ¡Buena suerte!

Comments are closed.