2012-04-21 172 views
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公司名稱中。當我嘗試修改它以將值存儲在類對象的不同字段中時出現錯誤。

+4

「I an error」 - 那個錯誤是? – 2012-04-21 07:04:18

+0

注意:\ n是非常不尋常的分隔符,爲什麼不使用更像「,」或簡單的空間的傳統?除非你真的想通過使用通常代表「新行」字符作爲列的單列行的讀者來代替你的代碼和配置的讀者... – 2012-04-21 07:18:12

回答

4

當你用"\\n"將你的行與你的例子中的行分開時,你會得到一個包含兩個項目的數組。第一項是\n左側的內容,第二項是右側的內容。

在您的代碼中,您正在循環瀏覽這兩個項目並創建新的對象,作爲構造函數的第一個參數傳入每個對象。

構造函數需要兩個參數,名稱和數字。在每一行上,第一個分割項是名稱,第二個項目是數字(以字符串表示形式)。而不是將兩個部分作爲第一個參數單獨傳遞給構造函數,都需要在創建對象時使用。雖然你有一個字符串的數字,所以你將需要先將它轉換爲一個整數,以便能夠在構造函數中使用它...

一旦你得到那部分排序,我相信應該解決的問題你有(無論那是什麼)。

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(); 
+0

如果我想要向類對象傳遞兩個以上的值,我該怎麼做確實是這樣,目前它得到了第一個也是最後一個元素。 – UnknownUser 2012-04-21 13:57:28

+0

然後在這種情況下將「pair」重命名爲「parts」,並使用索引代替First()和Last()。無論如何,「pair」是一個數組。 – user1339260 2012-04-21 14:04:24