0
所以,我一直在努力学习C#多一点,但当试图弄清楚如何正确使用事件时,我遇到了一堵墙。在事件触发器中发生空异常
不用说,当事件输入事件的值不为null时,当事件触发时,我总是收到一个空引用异常。任何帮助将非常感激。
代码:
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");
}
}
}
有关如何诊断“NullReferenceException”的信息,请参阅标记的副本。如果当你调试好你的代码时,你可以发布一个不仅仅是询问如何避免产生'NullReferenceException'的问题,而是发布一个新的问题,包括一个可靠地再现问题的好的[mcve],并且解释你已经完成调试异常以及您尝试解决该问题时遇到的具体问题。 –
非常感谢彼得。我的问题清楚地说明了我首先提出这个问题的原因。我不明白为什么我会得到一个空引用,但这是因为我对事件缺乏了解。这不是从理解什么是无效的概念。这仅仅是因为我不知道你将不得不使用+ =来分配事件。 – Sage