无效的表达术语' public'

时间:2016-05-07 18:53:00

标签: c# oop public access-modifiers

以下代码

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        public int x = 5;
        MessageBox.Show(x.ToString());
    }
}

我有以下错误

  

无效的表达术语' public'

public int x = 5;

为什么我不能在事件处理程序中定义公共对象?

1 个答案:

答案 0 :(得分:2)

public是类型(例如public class Foo)和类型成员(例如类的方法,属性或字段,例如button3_Click)的访问修饰符。

您试图将方法中的局部变量声明为public,这是不允许的。

修复编译错误的一种方法是从button3_Clickint x = 5;而不是public int x = 5;中的局部变量声明中删除访问修饰符。如果您只需要访问x中的变量button3_Click,就应该使用此项,并且您很高兴每次调用button3_Click时都会实例化一个新变量。

修复编译错误的另一种方法是将x从局部变量更改为字段。通过更改定义x的位置,您可以将其声明为Form1上的字段,而不是button3_Click范围内的本地变量。

尝试:

public partial class Form1 : Form
{
    public int x;

    public Form1()
    {
        InitializeComponent();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        x = 5;
        MessageBox.Show(x.ToString());
    }
}

如果您需要从程序中的其他方法访问x字段,或者希望在button3_Click Form1方法的多个调用中保留值,则此选项更为可取实例。

如果是这种情况,您还可以决定x一个property而不是field,以获得对阅读,写作和/的更精细控制或计算x