【发布时间】:2018-02-28 20:44:36
【问题描述】:
对于我的项目,我有几个课程。我想通过以下方式将其中两个课程联系在一起: 它是一个基本的预算应用程序。
public class Car
{
public int Insurance { get; set; }
public int Gas { get; set; }
}
public class Budget
{
public Car CarProperty { get; set; }
public Budget()
{
CarProperty = new Car();
}
}
这可能是不可能的,但我想只实例化 Budget 类 像这样
Budget budget = new Budget();
然后我想通过预算中的汽车属性分配汽车的属性,例如:
budget.CarProperty.Insurance = 500;
我不知道这是否可能,如果不是,或者我正在做一些完全荒谬的事情。 在我的 BLL 类库的 Manager 类中,我有一个在分配budget.CarProperty.Insurance = 500;
后返回预算的方法例如:
public class BudgetManager()
{
public void BudgetCreation()
{
Budget budget = new Budget();
budget.CarProperty.Insurance = 500;
return budget;
}
}
使用 Nuget
我创建了一个测试方法,它创建了一个新的预算实例
public void TestMethod()
{
Budget budget = new Budget();
BudgetManager manager = new BudgetManager();
budget = manager.BudgetCreation();
Assert.AreEqual(500, budget.CarProperty.Insurance)
}
budget.CarProperty.Insurance 只是返回 0 而不是 500。 同样,我可能遗漏了一些小细节并且对某些事情一无所知,所以请放轻松
【问题讨论】:
-
您的代码显示 CarCosts 和 Budget 类。你的汽车课在哪里?
-
类通常应该更加自给自足。您不必通过它们外部的代码来构建它们。更一般地说,我认为汽车成本只是一个类别而不是另一个类别,否则您可能会有几十个几乎相同的类别
-
是的,有可能,尽管您收到错误,因为 Budget 类的 CarProperty 尚未实例化,将 public AddResponse() 更改为 public Budget(),这样您就定义了一个构造函数到你的班级。
-
访问属性的属性是可能的,并不荒谬。你有没有尝试过?是什么让你认为这是不可能的?我猜是什么引发了这个问题。
-
我编辑了以前的代码以消除一些错误,因为我试图输入问题太快。我试图解释我到底在哪里遇到问题,那是在我的测试课上。当我在 Visual Studio 中查看本地窗口时,它没有识别出我分配了该属性并且基本上显示为零
标签: c# class properties nullreferenceexception