Non*_*biz 1 c# sorting variables class object
我是c#的新手,以前试图忽略类并构建我的小程序,在结构上更类似于PHP.到达路障后,我正试图重新开始并正确处理问题OO.我正在处理一个长文件,并且在循环中,每次满足某些条件时,我想创建一个新对象.如何创建新对象,而无需指定唯一名称?
Referral ObjectName = new Referral(string, string, int);
Run Code Online (Sandbox Code Playgroud)
其次,一旦完成,并且strings&int设置了适当的对象属性,我如何通过一个属性将该类唯一 - 然后按另一个属性对该类进行排序?
我很抱歉,如果这些是基本问题,我花了大量的时间首先尝试通过谷歌和教科书来解决这个问题.如果只有C#允许不同类型的多维数组!
非常感谢!
PS.我的意思是提取一个唯一对象列表.
所有这些答案虽然有用,但似乎涉及创建IEnumerables的阴影集.班级本身没有办法做到这一点吗?
尝试第一个解决方案,由Earwicker提供,将每个对象从循环内部添加到List,当我尝试将元素的属性写入控制台时,我得到ClassName + Referral.我能做错什么? - 解决了.还需要.property
还在工作...
C#确实允许无类型数组.所有对象最终都是从中派生出来的object,所以你使用objects 的数组或容器.但这很少是必要的.你有多少种类的物品?
在循环块中,您可以完全像在该行代码中那样创建对象(除了语法已修复),并且每次循环时它都将是一个新对象.要在循环外保留所有对象,可以将其添加到容器中:
List<Referral> referrals = new List<Referral>();
// in the loop:
Referral r = new Referral(str1, str2, num1);
referrals.Add(r);
Run Code Online (Sandbox Code Playgroud)
假设Referral有一个名为的数字属性Cost.
referrals.Sort((l, r) => l.Cost - r.Cost);
Run Code Online (Sandbox Code Playgroud)
按成本排序.
为了确保某些键的唯一性,您可能会发现选择更合适的容器更容易.
Dictionary<string, Referral> referrals = new List<Referral>();
// in the loop:
Referral r = new Referral(str1, str2, num1);
referrals[str1] = r;
Run Code Online (Sandbox Code Playgroud)
这将引用存储在以"值"命名的"槽"中str1.重复项将以静默方式相互覆盖.