2011-12-30 25 views
5

मैंने इसे लिखा और मुझे निम्न त्रुटियां मिलती हैं। क्या चर को एक-दूसरे को देखने का कोई आसान तरीका है?कक्षाओं और विधियों के बीच साझा चर

चेतावनी 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; 
     } 
    } 
} 
+0

आप आप अपने कोड [codereview की समीक्षा कर सकते हैं पता था। एसई] (http://codereview.stackexchange.com)? आपके कोड के साथ कुछ डिज़ाइन समस्याएं हैं जिन पर आप वहां प्रतिक्रिया एकत्र कर सकते हैं। – Adam

उत्तर

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; 
     } 
    } 
} 
0
public class notepad_check_class 
    { 
     public int notepad_running; 
     public static void notepad_check(notepad_check_class npc) 
     { 
      Process [] notepad_list = Process.GetProcessesByName("notepad"); 
      if (notepad_list.Length > 0) 
      { 
       npc.notepad_running = 1; 
      } 
     } 
    } 

    public class kill_notepad_class 
    { 
     public notepad_check_class npc; 
     public kill_notepad_class() { 
      npc = new notepad_check_class(); 
     } 
     public static void kill_notepad() 
     { 
      notepad_check_class.notepad_check(notepad_check_class npc); 
      if (npc.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; 
      } 
     } 
    } 

दा दा!

+1

यह कोड लाइन 'if (npc.notepad_running = 1) 'में ऑब्जेक्ट उदाहरण की आवश्यकता के लिए शिकायत करेगा क्योंकि यह स्थिर संदर्भ से उपयोग किया गया है। 'Notepad_running = 1;' –

+0

पर भी वही त्रुटि ठीक है। निश्चित है कि। ** वास्तविक ** समाधान के लिए –

5

आप notepad_check_class में सार्वजनिक स्थिर गुणों रख कर यह कर सकता है:

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

हालांकि मैं सिर्फ एक वर्ग का सुझाव देते हैं:

public static class NotepadManager { 

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

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

} 
+0

+1। पक्ष पर एक छोटा सा नोट: 'चेक() 'शायद' निजी 'हो सकता है, और' Kill()' कुछ और करने से पहले 'चेक()' कॉल कर सकता है। – Adam

संबंधित मुद्दे