C# List.Add()正在覆盖我以前的值
这是一个名为Expense Manager的类C# List.Add()正在覆盖我以前的值,c#,C#,这是一个名为Expense Manager的类 public void AddExpense(Expense currentExpense) { Console.Write("Enter date in this format (2017-08-26): "); currentExpense.date = DateTime.Parse(Console.ReadLine()); Console.Write("Enter the desc
public void AddExpense(Expense currentExpense)
{
Console.Write("Enter date in this format (2017-08-26): ");
currentExpense.date = DateTime.Parse(Console.ReadLine());
Console.Write("Enter the description: ");
currentExpense.description = Console.ReadLine();
Console.Write("Enter the amount: ");
currentExpense.amount = decimal.Parse(Console.ReadLine());
expenseList.Add(currentExpense);
}
public void PrintReport()
{
Console.Write("{0, -20} {1, 20} {2, 25} {3, 40}", "Index", "Date", "Amount", "Description\n");
Console.Write("{0, -20} {1, 20} {2, 25} {3, 40}", "-----", "----------", "----------", "----------------------\n");
for (int i = 0; i < (expenseList.Count); i++)
{
Console.Write("{0, -20} {1, 20} {2, 25:C2} {3, 40}\n", i, expenseList[i].date.ToShortDateString(), expenseList[i].amount, expenseList[i].description);
}
Console.Write("{0, -20} {1, 20} {2, 25} {3, 40}", "-----", "----------", "----------", "----------------------\n");
//Console.WriteLine("{0, 40} {1, 25:C2}", "\nTotal Amount:", expenseList[Count].amount);
}
以下是输出(显示相同的内容):
它将覆盖我以前的值,并在列表中显示相同的值。我不知道是什么问题。我真的需要帮助问题是您每次都使用相同的费用对象 这样想,你有一个
费用桶,你把它装满,然后把它放在列表中,然后下次你用同样的钱把它装满,再把它加到你的列表中
现在,当您打印出报告时,始终会得到相同的值(最后一个值)。那是因为你用的是同一个桶
修复方法是创建一个新的费用对象
case 1:
Expense myExpense = new Expense();
myExpenseManager.AddExpense(myExpense);
或者更好的是,只需在AddExpense
中创建它,您甚至不需要传入它
public void AddExpense()
{
Expense currentExpense = new Expense();
Console.Write("Enter date in this format (2017-08-26): ");
currentExpense.date = DateTime.Parse(Console.ReadLine());
Console.Write("Enter the description: ");
currentExpense.description = Console.ReadLine();
Console.Write("Enter the amount: ");
currentExpense.amount = decimal.Parse(Console.ReadLine());
expenseList.Add(currentExpense);
}
更新
你能再给我解释一下吗。为什么
“expenseList.Add(currentExpense)”不是在最后添加内容
虽然您多次将费用添加到列表中,但您只创建过一项费用。并且您不断用最后的值覆盖该值
您有一个完全相同的费用列表,它只被修改过几次
Bucket 1
Add your values
Add it to your list
Bucket 1
Add your values
Add it to your list
Bucket 1 = some expense
Add your values
Add it to your list
在一天结束时,你会一次又一次地列出相同的费用清单
List
Item 1 = Bucket 1
Item 2 = Bucket 1
Item 3 = Bucket 1
Item 4 = Bucket 1
Item 5 = Bucket 1
通过每次创建新的费用
List
Item 1 = Bucket 1
Item 2 = Bucket 2
Item 3 = Bucket 3
Item 4 = Bucket 4
Item 5 = Bucket 5
谢谢它起作用了,你能再多给我解释一下吗。为什么“expenseList.Add(currentExpense)”没有在最后添加内容。
List
Item 1 = Bucket 1
Item 2 = Bucket 1
Item 3 = Bucket 1
Item 4 = Bucket 1
Item 5 = Bucket 1
List
Item 1 = Bucket 1
Item 2 = Bucket 2
Item 3 = Bucket 3
Item 4 = Bucket 4
Item 5 = Bucket 5