【问题标题】:Creating a List in a C# Class在 C# 类中创建列表
【发布时间】:2016-02-04 23:11:05
【问题描述】:

这对其他人来说可能看起来很简单。但这对我来说相当困难。我的代码是这样的,目的是学习 C#。我想从List<Employee> 检索信息并让Display() 方法工作。希望有人能给我一些实用的建议。

class Program
{
    static void Main(string[] args)
    {
        List<Employee> employee = new List<Employee>();
        employee.Add(new Employee("Sudhakaran"));
        employee.Add(new Employee("Unnikrishnan"));
        employee.Add(new Employee("Meenakumari"));
        employee.Add(new Employee("Vijaya Lekshmi Menon"));
        employee.Add(new Employee("Seetha Devi Amma"));
        employee.Add(new Employee("Reghunathan Pillai"));
        employee.Add(new Employee("Parameswaran"));
        employee.Add(new Employee("Vani Parameswaran"));
        employee.Add(new Employee("Man Mohan"));
        employee.Add(new Employee("Anil Kumar"));
        employee.Add(new Employee("Athira"));

        //foreach (string emp in employee) //Not working.
        //{
        //}
    }
    public class Employee
    {
        public string name { get; set; }

        public Employee(string name)
        {
            this.name = name;
        }

        public List<string> ENames = new List<string>();

        public Employee()
        {
            Display();
        }

        public void Display()
        {
            foreach (string item in ENames)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}

【问题讨论】:

  • 你为什么Console.ReadLine();
  • 另外,Display 应该怎么做?
  • ENames 应该是什么?为什么构造函数调用Display
  • 我使用 Console.ReadLine() 来查看控制台窗口中将显示的内容。显示器应该从 FName 列表中获取项目。我还想在我需要的其他地方从 Main 的 List 员工那里获取信息。
  • 你没有 FName,但你有一个EName(在构造时它将是空的!)。

标签: c# list foreach


【解决方案1】:

employee 是 Employee 而不是 string 的列表。因此emp 必须是Employee 类型。

foreach (Employee emp in employee)
{
    emp.Display();
}

您也可以使用foreach(var emp in employee)。这并不意味着var 是任何类型,它是强类型的。 See documentation of var

【讨论】:

    【解决方案2】:
    foreach (Employee emp in employee) // changed 
    {
        Console.WriteLine(emp.name); // Write employe name to console
    }
    

    【讨论】:

    • 感谢 Abhilash P A.
    【解决方案3】:

    我看不到您使用ENames 做什么。您可以使用以下内容遍历列表:

    static void Main(string[] args)
    {
        List<Employee> employee = new List<Employee>();
        employee.Add(new Employee("Sudhakaran"));
        employee.Add(new Employee("Unnikrishnan"));
        employee.Add(new Employee("Meenakumari"));
        employee.Add(new Employee("Vijaya Lekshmi Menon"));
        employee.Add(new Employee("Seetha Devi Amma"));
        employee.Add(new Employee("Reghunathan Pillai"));
        employee.Add(new Employee("Parameswaran"));
        employee.Add(new Employee("Vani Parameswaran"));
        employee.Add(new Employee("Man Mohan"));
        employee.Add(new Employee("Anil Kumar"));
        employee.Add(new Employee("Athira"));
    
        foreach (Employee emp in employee) //Not working.
        {
            emp.Display();
        }
        Console.ReadLine();
    }
    
    public class Employee
    {
        public string name { get; set; }
    
        public Employee(string name)
        {
            this.name = name;
        }
    
        public void Display()
        {
            Console.WriteLine(name); 
        }
    }
    

    其中最重要的部分是遍历员工列表而不是字符串:

     foreach (Employee emp in employee) //Not working.
     {
          emp.Display();
     }
    

    【讨论】:

    • 没问题 - 很高兴您喜欢这个答案! :)
    • 非常好,先生。我喜欢它。
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多