0

我想知道如何在 C# 中将值从数组传递和存储到类对象。

这是我的主要程序代码

public partial class Form1 : Form
    {
        List<Configuration> lines = new List<Configuration>();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.listBox1.Items.Clear();
            //Read in every line in the file
            using (StreamReader reader = new StreamReader("file.txt"))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    string textfile = line;
                    string[] array = new string[] { "\\n" };
                    string[] parts = textfile.Split(array, StringSplitOptions.RemoveEmptyEntries);

                    ///////////////////////////////////////////////////
                    for (int i = 0; i < parts.Length; i++)
                    {
                       lines.Add(new Configuration(parts[i],0));

                    }
                    //lines.Add(new Configuration(line));

                    //listBox1.Items.Add(line);
                }

            }
            listBox1.DataSource = lines;
            listBox1.DisplayMember = "CompanyName";
        }
    }

我的班级目标代码

class Configuration
    {
        string _CompanyName;
        int _Employees;

        public Configuration(string companyname, int number_of_Employees)
        {
            _CompanyName = companyname;
            _Employees = number_of_Employees;
        }

        //program properties and validation
        public string CompanyName
        {
            set
            {
                _CompanyName = value;
            }
            get
            {
                return _CompanyName;
            }
        }// End of levelname validation

        //program properties and validation
        public int EmployeesNumber
        {
            set
            {
                _Employees = value;
            }
            get
            {
                return _Employees;
            }
        }// End of levelname validation
    }

目前,该程序读取一个文本文件,其中包含公司列表和每家公司的员工人数。像这样的结构

Microsoft\n92200
Google\n33077
Apple\n60400
IBM\n426751
Facebook\n3000

当程序运行时,它将公司名称和员工人数分成一个数组。该部分工作正常,它只是将所有内容存储到 String companyName 中。当我尝试修改它以将值存储在类对象的不同字段中时,我会出错。

4

2 回答 2

4

当您将行"\\n"与示例中的行分开时,您将获得一个包含两个项目的数组。第一项是左边的\n,第二项是右边的。

在您的代码中,您将遍历这两个项目并创建新Configuration对象,并将每个对象作为构造函数的第一个参数传入。

构造函数接受两个参数,名称和编号。在每一行中,拆分的第一项是名称,第二项是数字(以字符串表示形式)。与其将这两个部分分别作为第一个参数传递给构造函数,不如在创建对象时同时使用这两个部分。虽然您将数字作为字符串,但您需要先将其转换为整数才能在构造函数中使用它......

一旦您对该部分进行了分类,我相信这应该可以解决您遇到的问题(无论是什么)。

于 2012-04-21T07:10:49.997 回答
2
var configs = 
    from line
    in reader.ReadToEnd().Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)
    let pair = line.Split(new[] { "\\n"}, StringSplitOptions.RemoveEmptyEntries)
    select new Configuration(companyname: pair.First(), number_of_Employees: int.Parse(pair.Last()));

lines = configs.ToList();
于 2012-04-21T07:46:56.747 回答