2015-10-16 35 views
0

我自學C#和現代的Windows編程一般,有一個關於我還沒有找到一個答案在C#中列出的問題的。我使用的參考書似乎表明,在C#中,您可以將變量分配給列表之前,需要爲列表中的每個項目定義一個新變量並分配它的值。基本的C#列表 - 添加未知數量的項目

我試圖寫一個簡單的程序,讓我寫的文字說明,指定關鍵字給他們,並把它們過濾生成的基礎上我選擇的關鍵字Notes羣組。從我所知道的情況來看,List似乎是C#中最好的機制,因爲它會有未知數量的註釋。然而,我正在努力提前定義未知數量的變量名來存儲筆記,以添加到列表中。我是否在C#中查看錯誤的構造,誤解了爲List指定變量值需要什麼,或者缺乏一些自動創建變量和變量名稱機制的知識,這些變量和變量名稱可以作爲一個列表?還有別的嗎?

很抱歉,如果這是SE人羣過於簡單的問題,但是這似乎是問的最佳場所。

+1

爲什麼需要「未知號碼變量名稱「?如果x是一個列表,則每個成員都可以用x [0],x [1]等來訪問。至於過濾關鍵字,可以使用字典<字符串,列表>來處理,其中鍵是關鍵字,值點到該關鍵字的音符索引。或者,你可以去DB路線,有一個關鍵詞表來處理它,在這種情況下,它是DB 101 – Martheen

+0

我想你念錯了。您可以隨時將任意數量的項目添加到列表中 – Steve

+0

您的要求不明確。 'List'是一個特定類型的對象的集合,您可以從列表中添加/刪除對象,並可以通過索引訪問它。如果你想使用鍵值對,你可以使用'Dictionary'。如果你想要一個具有動態屬性的對象,你可能需要使用[ExpandoObject](https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v = vs.110).aspx)。 – bansi

回答

1

一個List<T>是一種數據結構,可以存儲數目不詳的T,但你並不需要在列表中的元素變量名 - 只爲列表本身。

這是你需要什麼?

var notes = new List<string>() 
{ 
    "This is a note.", 
    "I am happy", 
}; 

notes.Add("This is another happy note"); 

notes.AddRange(new [] { "Another happy notes", "This is also a note", }); 

var selected = notes.Where(n => n.Contains("happy")).ToList(); 

selected的值是:

「我很高興」, 「這又是一個快樂的音符」, 「另一種快樂的音符」

1

我不知道究竟是你的困惑。但這聽起來像是在構建類或使用C#類型時遇到問題。爲了保持簡單,現在您可以按照這種方式進行操作。

// This represents individual note 
public class Note 
{ 
    // Initialize keywords list in constructor 
    // in order to avoid Null reference exception. 
    public Note() { 
     Keywords = new List<string>(); 
    } 

    public string Title { get; set; } 
    public string Content { get; set; } 
    public List<string> Keywords { get; set; } 
} 

// In main code, you can simply have List<Note> to hold collection of any no of notes. 
// Also, when user adds a note you will create a new Note instance and add to collection. 
List<Note> notes = new List<Note>(); 

Note newNote = new Note(); 
newNote.Title = "Note 1"; 
newNote.Content = "Note 1 Content"; 
newNote.Keywords.Add("Test1"); 

notes.Add(newNote); 
+0

這是我遇到困惑的一個例子,因爲你有「notes.Add(newNote)」這一行,我看過的其他例子會調用下一個項目以不同的變量名稱添加到列表中(在這個例子中也許是「newNote2」)。因此,我解釋它的唯一方法就是在List中引用該值的唯一方法是使用原始變量名(例如「newNote」,「newNote1」等)。上面的@Martheen似乎回答了我的問題,您可以使用變量名作爲佔位符,然後使用位置(如x [1])訪問列表中的任何項目。如果正確,那就回答我的問題。 – Vaasa