当我调用ReadList函数时,它会打印元素,我做错了什么?我甚至尝试使用普通列表。我想要做的是如果我通过CreateAccount函数创建2个帐户,我想通过ReadList打印它们
namespace Bank
{
class Program
{
static void Main()
{
int option;
do
{
Menu1 menu1 = new Menu1();
Account account = new Account();
option = menu1.CallMenu1();
if (option == 1)
{
account.CreateAccount();
}else if (option == 2) {
account.ReadList();
break;
}
else
{
break;
}
} while (true);
}
}
class Account
{
int AccountNumber { get; set; }
string Name { get; set; }
float Balance { get; set; }
public void CreateAccount()
{
int AccountNumberInput;
string NameInput;
float BalanceInput;
ArrayList list = new ArrayList();
Console.WriteLine("put id");
AccountNumberInput = int.Parse(Console.ReadLine());
Console.WriteLine("type name");
NameInput =Console.ReadLine();
Console.WriteLine("type balance");
BalanceInput = float.Parse(Console.ReadLine());
list.Add(AccountNumberInput);
list.Add(NameInput);
list.Add(BalanceInput);
}
public void ReadList()
{
ArrayList list = new ArrayList();
foreach (string c in list)
{
Console.WriteLine(c);
}
}
}
}
答案 0 :(得分:2)
您的CreateAccount
方法执行此操作:
您的ReadList
方法执行此操作:
CreateAccount()
中创建的列表永远不会在方法之外传递 - 您如何期望ReadList()
方法了解它?
最简单的更改是让CreateAccount()
返回其创建的列表,然后将ReadList
更改为接受 ArrayList
作为参数。您需要更改Main
方法以将CreateAccount
的结果存储在本地变量中,然后在调用时将其传递给ReadList
。
然而,除此之外:
ArrayList
。许多年前,它被List<T>
取代了。CreateAccount
方法肯定会按照其说法执行操作:创建帐户。它应该是一个返回Account
的静态方法...那么你的ReadList
方法可能只是一个没有任何参数的PrintDetails
实例方法,因为你可以在 on < / em> CreateAccount
返回的实例。答案 1 :(得分:0)
因为你的班级错了。您正在使用其中一种方法初始化列表。一旦您的方法完成执行,其中的所有内容都将从内存中卸载。
为此,你必须向包含数据的类本身添加一个字段/属性,并且可以被类的所有方法使用
class Account
{
int AccountNumber { get; set; }
string Name { get; set; }
float Balance { get; set; }
//added this line
private ArrayList list {get;set;}
public void CreateAccount()
{
int AccountNumberInput;
string NameInput;
float BalanceInput;
//notice this
list = new ArrayList();
Console.WriteLine("put id");
AccountNumberInput = int.Parse(Console.ReadLine());
Console.WriteLine("type name");
NameInput =Console.ReadLine();
Console.WriteLine("type balance");
BalanceInput = float.Parse(Console.ReadLine());
list.Add(AccountNumberInput);
list.Add(NameInput);
list.Add(BalanceInput);
}
public void ReadList()
{
//removed ArrayList list = new ArrayList();
foreach (string c in list)
{
Console.WriteLine(c);
}
}
}