【问题标题】:Invalid expression term 'public'无效的表达术语“公共”
【发布时间】:2016-09-02 17:06:35
【问题描述】:

如下代码

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 int x = 5;

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

【问题讨论】:

  • 方法中的public关键字有什么用?
  • 为什么是public int x = 5;
  • 我只是测试在事件处理程序中声明公共对象
  • 有时我需要在事件处理程序中声明公共对象,例如“连接”
  • 改为使用x 类字段。

标签: c# oop public access-modifiers


【解决方案1】:

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

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

修复编译错误的一种方法是从button3_Click 中的局部变量声明中删除访问修饰符:int x = 5; 而不是public int x = 5;。如果您只需要访问 button3_Click 中的变量 x 并且您很高兴每次调用 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 字段,或者您希望在Form1 实例上多次调用button3_Click 方法时保留值,则此选项更可取。

如果是这种情况,您还可以决定将x 设为property 而不是field,以便更精细地控制x 的读取、写入和/或计算.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2014-02-03
    • 1970-01-01
    • 2011-06-22
    • 2020-09-23
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多