2015-10-16 49 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