2016-08-24 4 views
0

Итак, я пытался узнать C# немного больше, но я столкнулся с стеной, пытаясь понять, как правильно использовать события.Нулевое исключение происходит во время запуска события

Излишне говорить, что я продолжаю получать исключение нулевой ссылки, созданное при запуске события, когда значение, введенное в событие, не равно нулю. Любая помощь приветствуется.

Код:

public delegate void performdespoit(int value); 

class Bank 
{ 
    private int savingsGoal = 500; 
    private int balance; 
    //private int deposit; 

    public event performdespoit valueChanged; 
    public event performdespoit savingsReached; 

    public int Dep 
    { 
     set 
     { 
      this.balance = value; 

      this.valueChanged(balance); 

      if (balance > savingsGoal) 
      { 
       this.savingsReached(balance); 
      } 

     } 
    } 
} 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Bank Oldman = new Bank(); 

      string str; // holds response from user 
      int DEP; // holds the value to deposit 

      do 
      { 
       Console.WriteLine("Please enter a numerical value to deposit:"); 
       str = Console.ReadLine(); 
       if (!str.Equals("exit")) 
       { 
        DEP = Convert.ToInt32(str); 
        Oldman.Dep = DEP; 
       } 

      } while (!str.Equals("exit")); 

     } 
     static void valueChanged(int value) 
     { 
      Console.WriteLine("The current balance amount is {0}", value); 
     } 
     static void savingsReached(int value) 
     { 
      //something 
      Console.WriteLine("Something happens"); 
     } 


    } 

} 
+0

См. Отмеченный дубликат для получения информации о том, как диагностировать «NullReferenceException». Если и когда вы достаточно отлаживали свой код, чтобы опубликовать вопрос, выходящий за рамки простого запроса, как избежать получения «NullReferenceException», пожалуйста, напишите новый вопрос, включая хороший [mcve], который надежно воспроизводит проблему и объясняет, что вы 've сделано, чтобы отладить исключение и какую _специфическую проблему, с которой вы столкнулись, чтобы попытаться решить эту проблему. –

+0

Спасибо за штуку. В моем вопросе четко указывается, почему я задаю этот вопрос в первую очередь. Я не понимал, почему я получаю null refrence, но это из-за моего непонимания из событий. Не из понимания, что означало исключение nullrefrence. Это было просто потому, что я не знал, что вам придется использовать + = для назначения события. – Sage

ответ

0

NullReferenceException воля бросает, когда вы пытаетесь получить доступ что-то, не существующая/определена. Здесь в вашем случае вы не назначили события и пытаетесь вызвать его. которые приводят к выбросу исключения. Поэтому вам необходимо назначить следующие события:

Bank Oldman = new Bank(); 
Oldman.valueChanged += new performdespoit(valueChanged); 
Oldman.savingsReached += new performdespoit(savingsReached); 
+0

спасибо за помощь. – Sage

Смежные вопросы