gpt4 book ai didi

c# 循环创建对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:26 24 4
gpt4 key购买 nike

我是 c# 的新手,之前曾尝试忽略类并构建结构上更类似于 PHP 的小程序。遇到障碍后,我试图重新开始并正确地解决问题 OO。我正在处理一个长文件,并且在循环中,每次满足某些条件时,我都想创建一个新对象。我怎样才能让它创建一个新对象,而不必指定一个唯一的名称?

Referral ObjectName = new Referral(string, string, int);

其次,完成此操作后,strings 和 int 设置了它们适当的对象属性,我如何才能通过一个属性唯一化类,然后通过另一个属性对类进行排序?

如果这些是基本问题,我很抱歉,我首先花了很多时间尝试通过谷歌和教科书自己解决。如果 C# 允许不同类型的多维数组就好了!

非常感谢!

附言。我的意思是提取唯一对象的列表。

所有这些答案虽然有帮助,但似乎涉及创建 IEnumerables 的影子集。没有办法对类本身执行此操作吗?

尝试第一个解决方案,由 Earwicker 提供,将每个对象从循环内添加到列表中,当我尝试将元素的属性写入控制台时,我得到了 ClassName+Referral。我可能做错了什么? - 已解决。仍然需要.property

仍在工作。 . .

最佳答案

C# 确实允许无类型数组。所有对象最终都派生自 object,因此您可以使用 object 的数组或容器。但这很少是必要的。你有多少种类型的对象?

在循环 block 中,您可以完全按照您在该行代码中所做的那样创建一个对象(语法固定除外),并且每次循环都会成为一个新对象。为了使所有对象在循环外可用,您可以将其添加到容器中:

List<Referral> referrals = new List<Referral>();

// in the loop:
Referral r = new Referral(str1, str2, num1);
referrals.Add(r);

假设 Referral 有一个名为 Cost 的数字属性。

referrals.Sort((l, r) => l.Cost - r.Cost);

按成本排序。

为了通过某个键确保唯一性,您可能会发现更容易选择更合适的容器。

Dictionary<string, Referral> referrals = new List<Referral>();

// in the loop:
Referral r = new Referral(str1, str2, num1);
referrals[str1] = r;

这会将引用存储在以 str1 的值命名的“插槽”中。重复项将静默地相互覆盖。

关于c# 循环创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1160764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com