一个很好的 C# 集合
本文关键字:集合 很好 一个 | 更新日期: 2023-09-27 17:56:51
在 C# 中存储以下数据的好集合是什么:
我有复选框,这些复选框引入了与每个复选框关联的主题 ID、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等属性。
您可能希望为此使用二维数组,并为每个值分配数组第二维中的位置。例如,list[i][0]
是subjectid
,list[i][1]
是varnumber
,依此类推。
确定哪个集合,通常从你想用它做什么开始?
如果您唯一的标准是它可以是任何大小,那么我会考虑List<>
由于这是一个键,值对,我建议您使用基于通用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];