C# Как сделать ссылку на объект

как мне пофиксить ошибку "Ошибка CS0103 Имя "SoC" не существует в текущем контексте." знакомый мне сказал сделать ссылку, но как ее сделать я без понятия


namespace Killer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Process[] SoC;
            SoC = Process.GetProcessesByName("XR_3DA.exe");
        }

        private void kill_Click(object sender, EventArgs e)
        {
            foreach (Process SoC1 in SoC)
            {
                SoC1.CloseMainWindow();
            }
        }
    }
}

Ответы (2 шт):

Автор решения: Exploding Kitten

Вам нужно объявить переменную SoC не в конструктора, а в классе, тогда она будет доступна:

namespace Killer
{
    public partial class Form1 : Form
    {
        private Process[] SoC;

        public Form1()
        {
            InitializeComponent();            
            SoC = Process.GetProcessesByName("XR_3DA.exe");
        }

        private void kill_Click(object sender, EventArgs e)
        {
            foreach (Process SoC1 in SoC)
            {
                SoC1.CloseMainWindow();
            }
        }
    }
}
→ Ссылка
Автор решения: aepot

Поля в C#.

public partial class Form1 : Form
{
    private Process[] SoC;

    public Form1()
    {
        InitializeComponent();    
        SoC = Process.GetProcessesByName("XR_3DA.exe");
    }

    private void kill_Click(object sender, EventArgs e)
    {
        foreach (Process SoC1 in SoC)
        {
            SoC1.CloseMainWindow();
        }
    }
}

Дополнительно, крайне не рекомендуется вставлять свой код в конструктор формы. Рекомендую использовать обработчик события Form.Load для этого.

Исправленный код будет выглядеть так:

public partial class Form1 : Form
{
    private Process[] SoC;

    public Form1()
    {
        InitializeComponent();    
        this.Load += Form1_Load; // вместо этой строчки можете назначить обработчик в дизайнере, а строчку убрать
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        SoC = Process.GetProcessesByName("XR_3DA.exe");
    }

    private void kill_Click(object sender, EventArgs e)
    {
        foreach (Process SoC1 in SoC)
        {
            SoC1.CloseMainWindow();
        }
    }
}
→ Ссылка