2015-11-19 3 views
0
{ 
    public partial class form1 : Form 
    { 
     public form1() 
     { 
      InitializeComponent(); 
     } 
     public Button ButtonName { get { return } } 
     public static int initFaggleCount; 

     private void button1_Click(object sender, EventArgs e) 
     { 
      int faggleCount = initFaggleCount++; 
      string finalCalc = faggleCount.ToString(); 
      label1.Text = finalCalc; 
      /* 
      Console.WriteLine(faggleCount); 
      Console.ReadLine();*/ 
     } 
     private void button2_Click(object sender, EventArgs e) 
     { 
      /*TextWriter tw = new StreamWriter("SavedFaggleCount.txt"); 
      tw.WriteLine(); 
      tw.Close();*/ 
      Console.WriteLine(faggleCount); 
      Console.ReadLine(); 
     } 
    } 
} 

Я хотел бы целое faggleCount быть доступным из button2, так что я могу успешно Console.WriteLine(fagleCount); от button2. Я ноб, и любая помощь приветствуется. Благодаря!я не могу получить член в частном классе, чтобы быть доступным из другого частного класса

+0

с указанием каких-либо ошибок – Vinoth

+0

Да, потому что button2 не смог получить доступ к faggleCount. – Simillion

ответ

1

Вместо объявления локальной переменной внутри тела метода вы можете объявить переменную экземпляра, чтобы все члены класса могли получить к ней доступ.

public partial class form1 : Form 
{ 
    int faggleCount; //declare instance variable. 
    public form1() 
    { 
     InitializeComponent(); 
    } 
    public Button ButtonName { get { return } } 
    public static int initFaggleCount; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     faggleCount = initFaggleCount++; //use instance variable 
     string finalCalc = faggleCount.ToString(); 
     label1.Text = finalCalc; 
     /* 
     Console.WriteLine(faggleCount); 
     Console.ReadLine();*/ 
    } 
    private void button2_Click(object sender, EventArgs e) 
    { 
     /*TextWriter tw = new StreamWriter("SavedFaggleCount.txt"); 
     tw.WriteLine(); 
     tw.Close();*/ 
     Console.WriteLine(faggleCount); //use instance variable 
     Console.ReadLine(); 
    } 
} 
+0

Теперь я могу получить доступ к faggleCount везде, но значение int не передается между частными классами. Как я могу это сделать? – Simillion

+0

Сделайте это общедоступным :) –

+0

Не могли бы вы рассказать немного больше, например, показать мне, как это будет выглядеть с образцом кода, который я поставил? – Simillion

0

В коде faggleCount является локальным по отношению к методу т.е. только код в методе может получить к нему доступ. Вам нужно переместить переменную на уровень класса. например:

public class form1 : Form { 
    int faggleCount; 
    //your other code here 
} 

Как вы можете видеть, переменная теперь находится в классе, а не в методе. Таким образом, все методы в классе могут получить к нему доступ, и даже внутренний класс может получить к нему доступ!

Эта проблема очень распространена среди новичков. Понимание области переменной переменной довольно сложно. Короче говоря, Доступ к переменной в классе можно получить в классе, к способу можно получить доступ к переменной в методе.

+0

Значение int не передается между частными классами. Как я могу это сделать? – Simillion

+0

Значение int не должно передаваться между частными классами. В вашем дизайне должно быть что-то не так. Но если вы действительно этого хотите, измените 'int faggleCount' на' public int faggleCount'. – Sweeper