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
→ Ссылка
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();
}
}
}