我的名爲「list」的字典出現問題,因爲當我在添加一個人後從菜單調用方法removePeople
或saveToFile
時,它不打印或保存任何內容。當我評論循環Main
並創建類Person
的實例,然後手動調用所有方法它的作品。我在這裏錯過了什麼?字典不存儲值
using System;
using System.Collections.Generic;
using System.IO;
namespace scope_and_accessibility
{
class Program
{
static void Main(string[] args)
{
bool menu = true;
while (menu)
{
menu = Menu();
}
}
public static bool Menu()
{
Person person = new Person();
int choice;
Console.WriteLine("1. Add person");
Console.WriteLine("2. Delete person");
Console.WriteLine("3. Save data to text file");
Console.WriteLine("4. Exit");
choice = int.Parse(Console.ReadLine());
switch(choice)
{
case 1:
person.createPerson();
return true;
case 2:
person.removePeople();
return true;
case 3:
person.saveToFile();
return true;
case 4:
return false;
default:
return true;
}
}
}
class Person
{
private long choiceOfPerson = 0;
private string completeInfo = "";
public string firstName { get; set; }
public string lastName { get; set; }
public long personalIdentityNumber { get; set; }
public string Gender { get; set; }
DateTime dateOfBirth = new DateTime();
Dictionary<long, string> list = new Dictionary<long, string>();
public void createPerson()
{
Console.WriteLine("Enter personal identity number");
personalIdentityNumber = long.Parse(Console.ReadLine());
Console.WriteLine("Enter your first Name");
firstName = Console.ReadLine();
Console.WriteLine("Enter your last name");
lastName = Console.ReadLine();
Console.WriteLine("Enter your gender");
Gender = Console.ReadLine();
Console.WriteLine("Enter your date of birth: DD/MM/YYYY");
bool error = true;
{
while (error)
try
{
dateOfBirth = DateTime.Parse(Console.ReadLine());
error = false;
}
catch (FormatException fEx)
{
Console.WriteLine(fEx.Message);
}
}
completeInfo = firstName + " " + lastName + " " + Gender + " " + dateOfBirth.ToString("dd/MM/yyyy");
list.Add(personalIdentityNumber, completeInfo);
}
public void removePeople()
{
foreach (KeyValuePair<long, string> entry in list)
{
Console.WriteLine(completeInfo + " " + personalIdentityNumber);
}
Console.WriteLine("Write the perosnal identity number of person you wish to delete");
choiceOfPerson = long.Parse(Console.ReadLine());
list.Remove(choiceOfPerson);
}
public void saveToFile()
{
foreach (KeyValuePair<long, string> entry in list)
{
File.WriteAllText(@"E:\gry\info2.txt", completeInfo + personalIdentityNumber);
}
}
}
}
這是因爲在'Menu'中你每次都創建一個擁有自己'list'的新人 – litelite