【问题标题】:Can't access a variable from another class: Invalid expression term 'public'无法从另一个类访问变量:无效的表达式术语“公共”
【发布时间】:2013-02-16 09:56:15
【问题描述】:

Visual C# 2008 表达。窗口形式;两个文本框和一个按钮。在 cmdEnter_Click 事件中,我想检查 ValidateForm 类中的布尔变量是否为真(处理文本框是否被清除)。

private void cmdEnter_Click(object sender, EventArgs e)
{
     ValidateForm();
     txtName.Clear();
     txtAge.Clear();
}

public void ValidateForm()
{
     bool bValidName = ValidateName();
     bool bValidAge = ValidateAge();
     if (bValidName && bValidAge)
          MessageBox.Show("Entry will be added");               
     else
          MessageBox.Show("Please enter valid data");
}

我将 ValidateFrom() 修饰符从 private 更改为 public,然后将 public 放在布尔变量的前面,以便我可以访问它们,但我收到“Invalid expression term public”错误。我的理解是,如果变量是公共的并且在公共类中,我应该能够从任何地方访问它?

【问题讨论】:

  • 该代码不会显示给定的错误消息。你能多贴一些周围的代码吗?

标签: c# winforms


【解决方案1】:

在方法内声明的变量仅在该方法内可用,无论该类是否是公共的。

如果您想从公共类外部访问变量,请使用类级别变量。在您的方法之外声明它。 public/private 修饰符在方法中无效,它们需要在类级别使用。

public bool bValidName;

public void ValidateForm()
{
     bValidName = ValidateName();
     ...

根据您想要做什么,您可能希望将其设为属性,并且可以在 get/set 上使用修饰符。

public bool bValidName { get; set; }

【讨论】:

  • 谢谢。在点击事件中,我希望能够说出变量是否为真,然后清除相应文本框的文本。
  • 如果他们要将其设为属性,我建议遵循命名约定并使用ValidName
  • @KFP,我不知道您为什么需要访问类之外的变量,但代码仍然可以按照您编写的方式工作。唯一的区别是您正在更改范围和访问权限。正如 CAbbot 所说,公共属性的命名约定不使用驼峰式大小写。
  • 如果 bValidName = true,我还能怎么说(大意如此),然后不要清除文本框。否则,如果它是假的,那么就这样做。
  • @KFP,您已经知道清除文本框的语法。 if(!bValidName) { txtName.Clear();或者将.Text 属性设置为空字符串。
猜你喜欢
  • 2016-09-02
  • 2013-02-01
  • 2021-05-20
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
相关资源
最近更新 更多