Tag: 列表

C#:在二进制文件中写入和读取列表

我编写了一个具有User类的程序,该类保存到文件中以存储用户信息。 但是,可以有多个不同的用户,因此不是将文件保存为单个用户,而是用户列表。 这是在XNA,因此是一个游戏,但这不应该对事情有任何影响。 用户有硬币,皮肤,他们的库存,他们的用户名,他们的密码(如果有的话)和一个hasPassword bool。 因为用户有硬币,我不希望这是一个可编辑的文本文件,因此我将其保存为二进制文件。 我写了一些代码,测试了它,一切都很好,花花公子,直到我试图将多个用户保存到List。 出于某种原因,每当我保存第二个用户并在列表中读取时,列表只有一个对象(第一个用户)。 在这里,我将提供代码和示例,以便更容易理解: [Serializable] class User { #region Fields & Properties public string Username = “”; public string Password = “”; public bool HasPassword = false; public int Coins = 0; public List AchievementsCompleted = new List(); public List Inventory = new List(); public List Skins = new List(); […]

最有效的IEnumerable工作方式

在C#中遍历集合/ IEnumeration的最有效方法是什么。 我有一个包含近1100个对象的列表。 这些对象中的大约10个,包含1000个子对象(相同类型)。 遍历此列表需要大约5-6秒。 这是我的代码: foreach (Parameter par in this.AllParameters) //this.AllParameters is Generic.List type { foreach (Parameter subPar in par.WrappedSubParameters) { subPar.IsSelected = false; } par.IsSelected = false; } 有没有办法优化这段代码,以便它足够快,不需要5-6秒?

可通过索引和密钥访问的内置列表

是否可以创建一个可以通过索引或密钥访问的列表? 我正在寻找已经存在但具有此function的Collection类型,我想避免重新定义索引器

c#元组列表多种排序

我有一个三维元组数组: var CountList = new List<Tuple>(); 所需的排序在第一个int上以数字方式递增,然后在第二个int上以数字方式递减,因此 5, 4, 7 4, 5, 6 5, 2, 3 3, 5, 2 2, 4, 1 2, 6, 4 变 2, 6 ,4 2, 4, 1 3, 5, 2 4, 5, 6 5, 4, 7 5, 2, 3 有没有办法为List.Sort()指定更多搜索function,或者我是否需要将信息拆分到单独的列表,对每个组执行降序排序,然后将各个列表项添加到“主列表”中所需的升序?

C#列表是否像C ++列表一样?

我只是想知道C#List是否像C ++ List一样。 在C ++中删除大列表中间的元素很快,因为我知道元素只是指向下一个元素。 因此,在大型C#列表中删除元素时,是否与C ++中的相同? 或者C#列表更像是带有索引的C ++向量,因为您可以获得C#列表中元素的索引号。

从字符串数组的列表转换为对象列表

如果我有一个看起来像这样的简单类: public string Param1 { get; set; } public string Param2 { get; set; } public SimpleClass (string a, string b) { Param1 = a; Param2 = b; } 从另一个类返回的字符串数组列表: var list = new List {new[] {“first”, “second”}, new[] {“third”, “fourth”}}; 有没有更有效的方法使用C#最终得到List而不执行以下操作: var list1 = new List(); foreach (var i in list) { var data […]

List.Contains对象比较失败

我有一个类“Class1”,在.NET 2.0中有一个字符串变量“sText”。 我已经创建了该类“lstClass1”的对象列表。 它在设置字符串变量后存储该类的许多对象。 完整的代码是: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (!lstClass1.Contains(new Class1(“text1”))) lstClass1.Add(new Class1(“text1”)); } public List lstClass1 = new List(); } public class Class1 { public Class1(string sText) { this.sText = sText; } public string sText = “”; } […]

按属性c#排序对象列表

我有这堂课: public class Leg { public int Day { get; set; } public int Hour { get; set; } public int Min { get; set; } } 我有一个获取腿列表的函数,称为GetLegs() List legs = GetLegs(); 现在我想对此列表进行排序。 所以我首先要考虑的是日,然后是小时,最后是分钟。 我该如何解决这种排序? 谢谢

将JSON字符串解析为List

string json = “{\”People\”:[{\”FirstName\”:\”Hans\”,\”LastName\”:\”Olo\”} {\”FirstName\”:\”Jimmy\”,\”LastName\”:\”Crackedcorn\”}]}”; var obj = JObject.Parse(json); List first; List last; foreach (var child in obj[“People”].Children()) { var name = child.First()[“countryName”].ToString(); var two = child.First()[“countryCode”].ToString(); var three = child.First()[“isoAlpha3”].ToString(); countries.Add(name); twoCharCodes.Add(two); threeCharCodes.Add(three); Console.Write(“Name:\t\t{0}\n2CharCode:\t{1}\n3CharCode:\t{2}\n\n”, name, two, three); } 我正在寻找一种方法将每个FirstName值添加到第一个List中,并将LastName值与最后一个List相同。 这样做的最佳方法是什么? 上面的代码打破了: var name = child.First()[“countryName”].ToString(); 有这个错误: Cannot access child value on Newtonsoft.Json.Linq.JProperty 任何建议?

C#清除List ,值类型仍然是O(n)操作?

根据Microsoft 文档 ,在List上调用Clear()是O(n)操作。 我猜这是因为如果列表要保存引用,则需要将它们置空。 我想知道如果列表具有值类型,Clear()仍然是O(n)操作,因为容量没有改变。 复位索引指针和计数不应该足够吗? 我问这个是因为在当前的应用程序中我们使用的列表在很短的时间内就被清除了数十万次,并且想知道是否有不同的实现可以使它更快。