用列表填充组合框<;对象>;项目

本文关键字:对象 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;
    }
}