2013-11-04 74 views
0

我是C#的新手,也是對其他面向對象的語言的擴展,所以請原諒我的無知。我試圖創建綁定到一類具有兩個構件,如以下內容的列表變量:列表<T>其中T是一個有兩個成員的類,其中一個成員是另一個成員。我如何添加/設置變量?

List<bus> bus_list_2d = new List<bus>(); 

public class bus 
{ 
    public string channel { get; set; } 
    public List<String> label { get; set; } 
} 

我將通過具有分配的信道,其保持多個緩衝器的標籤的XML文檔被解析。頻道的確切數量對於緩衝區標籤是未知的並且是相同的,因此我想要使用列表。

我不知道我將如何創建添加功能,我想補充一個通道,然後繼續添加標籤的項目,然後繼續前進到下一個通道,並添加標籤項下,即等等。有人可以給我一個這樣的片段嗎?

+3

如果您是'C#'的新手,那麼請閱讀有關類(使用Capitals)和屬性的標準命名對話。 – ja72

回答

1

這可能是更容易添加到一個臨時變量,然後添加到bus_list_2d

bus b = new bus(); 
b.channel = "channel"; 
b.label = new List<string>(); 
b.label.Add("label1"); // this will probably be done in a loop of some kind 

// ... 

bus_list_2d.Add(b); 

另外,你可能希望有bus類的構造函數初始化label到一個新的List<string>讓你不必明確地做到這一點。也請遵循命名約定。類,屬性和方法都是大寫,並使用駝峯大小寫。

public class Bus 
{ 
    public string Channel { get; set; } 
    public List<String> Label { get; set; } 

    public Bus(string channel = "") 
    { 
     this.Channel = channel; 
     this.Label = new List<string>(); 
    } 
} 
4

在C#中我們使用PascalCase名稱的類型和公共成員。所以,最好是使用以下名稱:

public class Bus 
{ 
    public string Channel { get; set; } 
    public List<string> Labels { get; set; } 
} 

創建公交車的新名單看起來像:

List<Bus> buses = new List<Bus>(); 
Bus bus1 = new Bus(); 
bus1.Channel = "Channel 6"; 
bus1.Labels = new List<string>(); 
bus1.Labels.Add("label A"); 
bus1.Labels.Add("label B"); 
buses.Add(bus1); 

您也可以使用object and collection initializers

List<Bus> buses = new List<Bus> { 
    new Bus { 
     Channel = "Channel 6", 
     Labels = new List<string> { 
      "label A", 
      "label B" 
     } 
    } 
}; 
0

你可以嘗試像這樣的:

var busInfo = new Dictionay<string, List<string>>(); 


foreach(var channel in channels) 
{ 
    busInfo.Add(channel, new List<string>()); 
    foreach(var label in channel.labels) 
    { 
     busInfo[channel].Add(label); 
    } 
} 
0

嘗試使用params參數屬性一種方法AddBus()傳遞所有信息具有一個線(見下文Program)。

public class Foo 
{ 
    List<bus> bus_list_2d=new List<bus>(); 

    public void AddBus(string channel, params string[] labels) 
    { 
     bus_list_2d.Add(new bus() 
     { 
      channel=channel, 
      label=new List<string>(labels) 
     }); 
    } 
} 

public class bus 
{ 
    public string channel { get; set; } 
    public List<String> label { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Foo foo=new Foo(); 

     foo.AddBus("ABC", "A", "B", "C"); 
    } 
} 
相關問題