C# 无法打印arraylist或list的元素

C# 无法打印arraylist或list的元素,c#,C#,当我调用ReadList函数时,它不打印元素,我做错了什么?我甚至尝试使用普通列表。我想做的是,如果我通过CreateCount函数创建了两个帐户,我想通过ReadList打印它们 namespace Bank { class Program { static void Main() { int option; do { Men

当我调用ReadList函数时,它不打印元素,我做错了什么?我甚至尝试使用普通列表。我想做的是,如果我通过CreateCount函数创建了两个帐户,我想通过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);
            }
        }
    }
}

您的
CreateAccount
方法执行以下操作:

  • 创建一个新列表
  • 填充列表
  • 这张单子没什么用
您的
ReadList
方法执行以下操作:

  • 创建一个新的(空)列表
  • 打印列表的内容
CreateAccount()
中创建的列表从未在方法之外进行通信-您希望
ReadList()
方法如何知道它

最简单的更改是使
CreateAccount()
返回它创建的列表,然后更改
ReadList
以接受
ArrayList
作为参数。您需要更改
Main
方法,将
CreateAccount
的结果存储在局部变量中,然后在调用该变量时将其传递给
ReadList

然而,除此之外:

  • 我会避免在任何新代码中使用
    ArrayList
    。许多年前,它被
    List
    取代
  • 您的
    CreateAccount
    方法肯定应该做到它所说的:创建一个帐户。它可能是一个返回
    帐户的静态方法
    。。。然后,您的
    ReadList
    方法可以是一个没有任何参数的
    PrintDetails
    实例方法,因为您将在
    CreateAccount
    返回的实例上调用它
  • 如果有人试图在创建帐号之前打印帐号,你应该考虑一下你想做的事情…
您的
CreateAccount
方法执行以下操作:

  • 创建一个新列表
  • 填充列表
  • 这张单子没什么用
您的
ReadList
方法执行以下操作:

  • 创建一个新的(空)列表
  • 打印列表的内容
CreateAccount()
中创建的列表从未在方法之外进行通信-您希望
ReadList()
方法如何知道它

最简单的更改是使
CreateAccount()
返回它创建的列表,然后更改
ReadList
以接受
ArrayList
作为参数。您需要更改
Main
方法,将
CreateAccount
的结果存储在局部变量中,然后在调用该变量时将其传递给
ReadList

然而,除此之外:

  • 我会避免在任何新代码中使用
    ArrayList
    。许多年前,它被
    List
    取代
  • 您的
    CreateAccount
    方法肯定应该做到它所说的:创建一个帐户。它可能是一个返回
    帐户的静态方法
    。。。然后,您的
    ReadList
    方法可以是一个没有任何参数的
    PrintDetails
    实例方法,因为您将在
    CreateAccount
    返回的实例上调用它
  • 如果有人试图在创建帐号之前打印帐号,你应该考虑一下你想做的事情…
    因为你的课错了。您正在其中一个方法中初始化列表。一旦方法完成执行,它内部的所有内容都将从内存中卸载

    要使其工作,必须向类本身添加一个字段/属性,该字段/属性包含数据并可由类的所有方法使用

    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);
            }
        }
    }
    

    因为你的课错了。您正在其中一个方法中初始化列表。一旦方法完成执行,它内部的所有内容都将从内存中卸载

    要使其工作,必须向类本身添加一个字段/属性,该字段/属性包含数据并可由类的所有方法使用

    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);
            }
        }
    }
    

    出于兴趣,为什么您仍然使用
    ArrayList
    ?12年前的2005年,它被
    List
    取代;foreach(列表中的字符串c)-您从未将任何内容放入
    列表中
    ,那么您希望打印出什么出于兴趣,
    ReadList
    中的
    list
    变量与
    CreateAccount
    中的变量不同,为什么您仍然使用
    ArrayList
    ?12年前的2005年,它被
    List
    取代;foreach(列表中的字符串c)-您从未将任何内容放入
    列表中
    ,那么您希望打印出什么
    ReadList
    中的
    list
    变量与
    CreateAccount