错误1非静态字段、方法或属性需要对象引用';LCB.Code.cuentaBanco.agregar(浮动)

本文关键字:Code LCB cuentaBanco agregar 浮动 对象引用 字段 静态 方法 属性 错误 | 更新日期: 2023-09-27 18:19:29

namespace LCB.Code
{
    public class cuentaBanco
    {
        string nombre;
        float cuenta;
        public cuentaBanco(string nombre, float cuenta)
        {
            this.nombre = nombre;
            this.cuenta = cuenta;
        }
        public void agregar(float incrementar)
        {
            this.cuenta += incrementar;
        }
        public void remover(float remover)
        {
            if (remover >this.cuenta)
            {
                this.cuenta = 0;
            }
            else
            {
                this.cuenta -= remover;
            }
        }
    }
}

using LCB.Code;    
namespace ACB
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = cuentaBanco.agregar(float.Parse(textBox1.Text)).ToString();
        }
    }
}

错误1非静态字段、方法或属性需要对象引用';LCB.Code.cuentaBanco.agregar(浮动)

需要一个对象的实例这意味着如果没有声明和初始化类的实例,就不能调用该类的NON STATIC方法。所以你有两个选择。使agregar方法为静态方法或初始化cuentaBanco类的一个实例。我真的建议远离静态方法,除非你有明确的理由在你的类的许多实例之间提供方法,而且在你的代码中,我看不出有任何理由使用静态方法。所以我选择了另一种选择
制作cuentaBanco类的实例。。。

private void button1_Click(object sender, EventArgs e)
{
    cuentaBanco cuenta = new cuentaBanco("ABC", 0f);
    label1.Text = cuenta.agregar(float.Parse(textBox1.Text)).ToString();
}

但现在我们有另一个问题。agregar方法被声明为void。这意味着它不会返回任何内容。因此,不能将ToString()应用于void返回方法
您还需要更改agregar方法以返回计算值

public class cuentaBanco
{
    ....
    public float agregar(float incrementar)
    {
        this.cuenta += incrementar;
        return this.cuenta;
    }
    ....
}

同样,看看你的类,你似乎想要一个对象来保持你的计数,并为每次点击按钮增加内部数字。在这种情况下,你想为你的计数保留一个全局对象,并在初始化窗体时声明和初始化一个cuentaBanco类型的类级变量。现在你可以使用该变量使你的计数

public partial class Form1 : Form
{
    private cuentaBanco cuenta;
    public Form1()
    {
        InitializeComponent();
        cuenta = new cuentaBanco("ABC", 0f);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        label1.Text = cuenta.agregar(float.Parse(textBox1.Text)).ToString();
    }
}

您应该将方法agregar设置为静态。同样,在使agregar为静态之后,您也应该使cuenta为静态。此外,agregar方法是void,您不能将其设置为label1.Text,您应该将其返回类型更改为float:

static float _cuenta;
public static float agregar(float incrementar)
{
    _cuenta += incrementar;
    return _cuenta;
}

同样在cuentaBanco方法中,删除this关键字并设置一个有效名称,而不是像_cuenta:那样的cuenta

public cuentaBanco(string nombre, float cuenta)
{
    this.nombre = nombre;
    _cuenta = cuenta;
}