在C#中,用什么好的集合来存储下面的数据:
我有复选框,每个复选框都带有一个 subjectId、varnumber、varname 和与其关联的标题。
我需要一个可以任意大小的集合,可能是 ArrayList,也可能:
list[i][subjectid] = x;
list[i][varnumber] = x;
list[i][varname] = x;
list[i][title] = x;
有什么好的想法吗?
在C#中,用什么好的集合来存储下面的数据:
我有复选框,每个复选框都带有一个 subjectId、varnumber、varname 和与其关联的标题。
我需要一个可以任意大小的集合,可能是 ArrayList,也可能:
list[i][subjectid] = x;
list[i][varnumber] = x;
list[i][varname] = x;
list[i][title] = x;
有什么好的想法吗?
一个List<Mumble>
,其中Mumble是一个小助手类,用于存储属性。
List<Mumble> list = new List<Mumble>();
...
var foo = new Mumble(subjectid);
foo.varnumber = bar;
...
list.Add(foo);
,..
list[i].varname = "something else";
public Class MyFields
{
public int SubjectID { get; set; }
public int VarNumber { get; set; }
public string VarName { get; set; }
public string Title { get; set; }
}
var myList = new List<MyFields>();
访问成员:
var myVarName = myList[i].VarName;
List<YourClass>
将会很棒 - 其中 YourClass 具有 subjectid、varnumber 等属性。由于这是一个键值对,我建议您使用基于泛型的IDictionary集合。
// Create a new dictionary of strings, with string keys,
// and access it through the IDictionary generic interface.
IDictionary<string, string> openWith =
new Dictionary<string, string>();
// Add some elements to the dictionary. There are no
// duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
如果[i]的顺序不可预测,或者可能存在间隔,但您需要将其用作键,则有一种微小的可能性:
public class Thing
{
int SubjectID { get; set; }
int VarNumber { get; set; }
string VarName { get; set; }
string Title { get; set; }
}
Dictionary<int, Thing> things = new Dictionary<int, Thing>();
dict.Add(i, thing);
然后要找到一个Thing
:
var myThing = things[i];
针对这个问题,你可能想要使用 二维数组,并在数组的第二维中为每个值分配位置。例如,list[i][0]
将是 subjectid
,list[i][1]
将是 varnumber
,以此类推。
确定集合的选择通常始于您想要使用它做什么?
如果您唯一的标准是它可以是任何大小,那么我会考虑使用List<>