在类和方法之间共享变量

5 c# variables methods class

我写了这个,我得到以下错误.有没有简单的方法让变量看到对方?

警告1已分配变量'notepad_running',但从不使用其值.

错误2当前上下文中不存在名称"notepad_running".

错误3当前上下文中不存在名称"notepad_list".

public class notepad_check_class
{
    public static void notepad_check()
    {
        Process [] notepad_list = Process.GetProcessesByName("notepad");
        if (notepad_list.Length > 0)
        {
            int notepad_running = 1;
        }
    }
}

public class kill_notepad_class
{
    public static void kill_notepad()
    {
        notepad_check_class.notepad_check();
        if (notepad_running = 1)
        {
            if (MessageBox.Show("Are you sure you want to kill all notepad processes?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            foreach (Process notepad_process in notepad_list)
            {
                notepad_process.Kill();
            }
            return;
        }
        else
        {
            MessageBox.Show("Cannot find any running process of notepad.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*mes 5

您可以通过将公共静态属性放入notepad_check_class:

public static Process[] NotepadList { set; get; }
public static int NotepadRunning { set; get; }
Run Code Online (Sandbox Code Playgroud)

但是我建议只上一节课:

public static class NotepadManager {

  private static Process[] NotepadList { set; get; }
  private static int NotepadRunning { set; get; }

  public static void Check() { ... }
  public static void Kill() { ... }

}
Run Code Online (Sandbox Code Playgroud)


Tom*_*ski 1

你可以制作它们public static。这将是一个粗略的代码重构,以修复您的编译错误。

public class notepad_check_class
{
    public static Process[] notepad_list;
    public static bool notepad_running;

    public static void notepad_check()
    {
        notepad_list = Process.GetProcessesByName("notepad");

        notepad_running = notepad_list.Length > 0;
    }
}

public class kill_notepad_class
{
    public static void kill_notepad()
    {
        notepad_check_class.notepad_check();

        if (notepad_check_class.notepad_running)
        {
            if (MessageBox.Show("Are you sure you want to kill all notepad processes?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                foreach (Process notepad_process in notepad_check_class.notepad_list)
                {
                    notepad_process.Kill();
                }
            return;
        }
        else
        {
            MessageBox.Show("Cannot find any running process of notepad.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)