如何更新C#中的List <t>?</t>

时间:2012-01-19 17:32:10

标签: visual-studio-2010 c#-4.0

我正在学习C#编程的基础课程,之前从未编程过任何东西。我们的一个练习是创建一个可以从头开出电影的程序(即Videostore)。

我的一个课程包含客户。我需要一种方法,其中程序的用户可以将客户添加到第一个列表,并且需要一个单独的方法来显示包含新添加的客户的所有客户;或者如果没有添加客户那么原始客户。

这就是我到目前为止所做的:

  1. 我为原​​始客户创建了List<T>
  2. 我制作了一个方法,可以将客户添加到第一个列表中,并以一种方法显示它们。
  3. 问题在于我不知道如何使用用户添加的客户更新原始客户列表。如果我调用整个方法,它显然(甚至对我来说)返回整个方法并让用户再次添加客户。我尝试创建两个List<T>,但是如何让原始列表更新以包含用户添加的客户?我设法从第二个调用第一个列表,但反过来不起作用。

    我已经尝试过并尝试过但我只是想完了!对我来说,即使走到这一步也是一项挑战。我想要全力以赴。编程并不容易。

    如果有人有任何建议我会非常高兴!

    namespace MyNameSpace
    {
        public class Customers
        {
            public Customers()
            {
    
            }       
    
            public string Name
            {
                get;
                set;
            }
            public string Tel
            {
                get;
                set;
            }
    
            public List<Customers> CustomerList1()     //Original customers                      
            {
                List<Customers> newCustomer = new List<Customers>
                {
                   new Customers
                   {
                       Name="A",
                       Tel="1"
                   },
                   new Customers
                   {
                       Name="H",
                       Tel="2"
                   },     
                };
    
                return newCustomer;
            }
    
            public List<Customers> CustomerList2()    //User adds new customers                                  
            {
                List<Customers> custList = CustomerList1();
    
                Console.WriteLine("---------------------------");
                Console.WriteLine("New Customer");
                Console.WriteLine("---------------------------");
                Console.WriteLine("Name:");
                Console.WriteLine("Tel:");
    
                List<Customers> addedCustomer = new List<Customers> 
                {
                    new Customers               //There is most likely a better way... 
                    {
                        Name=Console.ReadLine(),
                        Telephone=Console.ReadLine()
                    }          
                };
    
                custList.AddRange(addedCustomer);
    
                Console.WriteLine("***************List******************");
                foreach (Customers c in custList)
                {
                    Console.WriteLine();
                    Console.WriteLine(c.Name);
                    Console.WriteLine(c.Tel);
                    Console.WriteLine();
                }
    
                Console.WriteLine("******************************************");
    
                return addedCustomer;       
            }
    
            public void CustomerView()  //This method only returns original list
            {                             
                List<Customers> customers = CustomerList1();
                foreach (Customers c in customers)
                {
                    Console.WriteLine();
                    Console.WriteLine(c.Name);
                    Console.WriteLine(c.Tel);
                    Console.WriteLine();
                }
                Console.WriteLine("*******************");
            }
    
            public void CustomerListAdd()          //This is another method I´ve tried to add
            {                                                       customers..
                List<Customers> customers = CustomerList1();   
    
                Console.WriteLine("");
                Console.WriteLine("---------------------------");
                Console.WriteLine("New Customer");
                Console.WriteLine("---------------------------");
    
                Customers customerAdd = new Customers();
                Console.WriteLine("Name:");
                customerAdd.Name = Console.ReadLine();
                Console.WriteLine("Tel:");
                customerAdd.Telephone = Console.ReadLine();
                customers.Add(customerAdd);
    
                Console.WriteLine();
    
                foreach (Customers c in customers)
                {
                    Console.WriteLine();
                    Console.WriteLine(c.Name);
                    Console.WriteLine(c.Tel);
                    Console.WriteLine();
                }
                Console.WriteLine("*******************");
            }
        }   
    }
    

    提前谢谢

1 个答案:

答案 0 :(得分:3)

使您的客户列表级别:

public class MyClass
{
    // this is outside of a method, but inside the class
    private List<Customer> customers; 

    public MyClass() 
    {
        // instantiate the customer list inside the constructor
        customers = new List<Customer>();  

        // add a default customer to the list by calling the AddCustomer 
        // method in the constructor.
        AddCustomer(new Customer() { Name = "A", Tel="1" });

        // You can also bypass the AddCustomer method below and just call
        // customers.Add() here instead.  If you have other things you want  
        // to do (like insert the customer into a database, for example)
        // you might want to keep the method like I have below.
    }

    public void AddCustomer(Customer cust)
    {
        // add the customer to the existing list.
        customers.Add(cust); 
    }
}