在C#中创建一个类对象

时间:2011-09-12 19:52:52

标签: c# .net windows

我正在尝试创建一个类的对象,但它似乎不起作用,我不禁想到我从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是班级名称)

5 个答案:

答案 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();
    }

...
}