我正在尝试创建一个类的对象,但它似乎不起作用,我不禁想到我从JAVA的角度来看这个:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
PortChecks PortCheckObject = new PortChecks();
}
private void testCheck_Click(object sender, EventArgs e)
{
PortCheckObject.MyMethod();
}
使用PortCheckObject调用我的方法MyMethod
时,我会出错(PortChecks是班级名称)
答案 0 :(得分:9)
这是因为它超出了testCheck_Click
public partial class Form1 : Form
{
PortChecks PortCheckObject = new PortChecks();
public Form1()
{
InitializeComponent();
}
private void testCheck_Click(object sender, EventArgs e)
{
PortCheckObject.MyMethod();
}
}
答案 1 :(得分:3)
PortChecks PortCheckObject
构造函数中的 Form1
是一个局部变量
将其声明作为Form1
类中的私有字段。
public partial class Form1 : Form
{
private PortChecks PortCheckObject = new PortChecks();
public Form1()
{
InitializeComponent();
}
private void testCheck_Click(object sender, EventArgs e)
{
PortCheckObject.MyMethod();
}
}
答案 2 :(得分:2)
@詹姆斯,
您需要一个名为“PortCheckObject”的类属性,并且可以在该类的其他部分访问。
public partial class Form1 : Form
{
private PortChecks PortCheckObject;
public Form1()
{
InitializeComponent();
PortCheckObject = new PortChecks();
}
private void testCheck_Click(object sender, EventArgs e)
{
PortCheckObject.MyMethod();
}
}
答案 3 :(得分:1)
这是一个通用范围问题,而不是Java v.s. C#问题(因为你的代码也不适用于Java)。 PortCheckObject在Form1()的范围内,而不是testCheck_Click的范围。请尝试以下方法:
public partial class Form1 : Form
{
private PortChecks PortCheckObject;
public Form1()
{
InitializeComponent();
PortCheckObject = new PortChecks();
}
private void testCheck_Click(object sender, EventArgs e)
{
PortCheckObject.MyMethod();
}
答案 4 :(得分:0)
这是范围问题的一个实例。您的testCheck_Click方法中没有范围。进行以下更改,它应该有效:
public partial class Form1 : Form
{
private PortChecks MyPortCheck {get; set;}
public Form1()
{
InitializeComponent();
MyPortCheck = new PortChecks();
}
private void testCheck_Click(object sender, EventArgs e)
{
MyPortCheck .MyMethod();
}
...
}