我不认为这是重复的,因为关于空引用异常的一般文本的情况谈论了实例未被初始化或者被解除引用而程序员没有意识到的情况。在这种情况下,对象有4个变量与初始化实例一起使用,并且所有变量都“正常”(我认为该对象未被设置为null并被引用。但是同一个实例的第四个变量抛出异常。 我正在使用Head First学习C#,我构建了一个程序,其中一个Property用于设置另一个类的“只读”公共变量。定义Property的类具有已定义的构造函数。当我运行程序时,我收到'NullReference Exception unhandled'消息。
该属性是这样的:
public decimal Cost
{
get
{
decimal totalCost = CalculateCostOfDecorations();
totalCost += ((CalculateCostOfBeveragesPerPerson() + CostOfFoodPerPerson) * NumberOfPeople);
if (HealthyOption)
{
totalCost *= .95M;
return totalCost;
}
return totalCost;
}
}
构造函数是:
public DinnerParty(int numberOfPeople, bool healthyOption, bool fancyDecorations)
{
NumberOfPeople = numberOfPeople;
HealthyOption = healthyOption;
FancyDecorations = fancyDecorations;
}
奇怪的是,在初始化对象“dinnerParty”的Form.cs类中,使用和分配了构造函数中的所有变量,因为它们中的任何一个都没有出现异常,但是“Cost”变量在:
private void DisplayDinnerPartyCost()
{
decimal Cost = dinnerParty.Cost;
label1.Text = Cost.ToString("c");
}
这是同一个DinnerParty初始化实例的一部分,当我输入实例名称时由Intellisense建议,抛出异常。我在microsoft的文档中读到,即使对象实际上已初始化,如果将其设置为null,也可能导致这种情况,但是将值传递给实例变量的代码应该是在这种情况下指定“null”值的代码。但由于我没有声明任何可以为空的变量,这怎么可能发生呢?