用列表填充组合框<;对象>;项目
本文关键字:对象 gt 项目 列表 lt 组合 填充 | 更新日期: 2023-09-27 18:30:01
所以我创建了这个类来获取给定字符串的频率:来自列表的性别->
public static List<GenderFrequency> GenderFrequencies(List<Bird> birds)
{
List<GenderFrequency> result = new List<GenderFrequency>();
foreach (Bird b in birds)
UpdateGenderList(b, result);
return result;
}
private static void UpdateGenderList(Bird b, List<GenderFrequency> freqs)
{
foreach (GenderFrequency freq in freqs)
if (freq.Gender.Equals(b.Gender, StringComparison.CurrentCultureIgnoreCase))
{
freq.FrequencyPlus1();
return;
}
GenderFrequency newfr = new GenderFrequency() { Gender = b.Gender, Frequency = 1 };
freqs.Add(newfr);
//Console.WriteLine(newfr);
}
private void FrequencyPlus1()
{
Frequency = Frequency + 1;
}
public override string ToString()
{
return Gender + " (" + Frequency + ")";
}
我想用这种方法把这些结果放在一个组合框中:
private void showGenderFreq()
{
cboGenderFreq.Items.Clear();
foreach (GenderFrequency g in GenderFrequency.GenderFrequencies())
{
cboGenderFreq.Items.Add(g);
}
}
但它给了我一个错误,因为我不知道要将哪个列表参数放入Genderfrequencies()中才能使其工作,然后VS建议将此代码添加到我的Genderfrequency类:
internal static IEnumerable<GenderFrequency> GenderFrequencies()
{
throw new NotImplementedException();
}
但我认为这没有多大帮助,问题可能在showGenderFreq()中
提前感谢
您的GenderFrequencies
方法被定义为需要一个参数(List<Bird>
),而您不提供该参数。您需要提供参数:
foreach (GenderFrequency g in GenderFrequency.GenderFrequencies(birds))
其中CCD_ 3将是(理论上)定义的CCD_。
然而,我会在一个临时变量中获得从GenderFrequencies
返回的List,然后在该临时变量中迭代,而不是每次在循环中调用GenderFrequencies
。类似这样的东西:
List<GenderFrequency> genderFrequencies = GenderFrequencies.GenderFrequencies(birds);
foreach (GenderFrequency g in genderFrequencies)
{
}
此外,为了可读性,我会对您的程序进行一些小的更改。
首先,将静态GenderFrequencies
方法更改为类似GetGenderFrequencies
的方法。(在我看来)它更具描述性。
其次,可以用简单的Frequency++;
代替GenderFrequencyPlus1
方法。
所以它可能看起来像这样:
foreach (GenderFrequency freq in freqs)
{
if (freq.Gender.Equals(b.Gender, StringComparison.CurrentCultureIgnoreCase))
{
freq.Frequency++;
return;
}
}