Создание объекта класса в C # - PullRequest
2 голосов
/ 12 сентября 2011

Я пытаюсь создать объект класса, но он, кажется, не работает, я не могу не думать, что смотрю на это с точки зрения JAVA:

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

            PortChecks PortCheckObject = new PortChecks();

        }

private void testCheck_Click(object sender, EventArgs e)
        {
            PortCheckObject.MyMethod();
        }

Iможет вызвать ошибку при использовании PortCheckObject для вызова моего метода MyMethod

(PortChecks - это имя класса)

Ответы [ 5 ]

9 голосов
/ 12 сентября 2011

Это потому, что это выходит за рамки testCheck_Click

public partial class Form1 : Form
{
    PortChecks PortCheckObject = new PortChecks();

    public Form1()
    {
        InitializeComponent();
    }

    private void testCheck_Click(object sender, EventArgs e)
    {
        PortCheckObject.MyMethod();
    }
}
3 голосов
/ 12 сентября 2011

PortChecks PortCheckObject в Form1 конструктор является локальной переменной.
Поместите свое объявление как личное поле в Form1 class.

public partial class Form1 : Form
{
    private PortChecks PortCheckObject = new PortChecks();

    public Form1()
    {
        InitializeComponent();
    }

    private void testCheck_Click(object sender, EventArgs e)
    {
        PortCheckObject.MyMethod();
    }
}
2 голосов
/ 12 сентября 2011

@ Джеймс,

Вам необходимо свойство класса с именем '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();
    }
}
1 голос
/ 12 сентября 2011

Это общая проблема, а не проблема Java и 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();
    }
0 голосов
/ 12 сентября 2011

Это пример проблемы с областью видимости. У вас нет области действия в вашем методе 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();
    }

...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...