c# - 如何避免在 C# 中使用枚举重复代码?

标签 c# dynamic enums repeat

我正在用三个相应枚举的值填充三个列表框。有什么方法可以避免使用三种独立但非常相似的方法吗?这是我现在拥有的:

    private void PopulateListBoxOne()
    {
        foreach (EnumOne one in Enum.GetValues(typeof(EnumOne)))
        {
            lstOne.Items.Add(one);
        }
        lstOne.SelectedIndex         = 0;
    }

    private void PopulateListBoxTwo()
    {
        foreach (EnumTwo two in Enum.GetValues(typeof(EnumTwo)))
        {
            lstTwo.Items.Add(two);
        }
        lstTwo.SelectedIndex         = 0;
    }

    private void PopulateListBoxThree()
    {
        foreach (EnumThree three in Enum.GetValues(typeof(EnumThree)))
        {
            lstThree.Items.Add(three);
        }
        lstThree.SelectedIndex         = 0;
    }

但我宁愿有一种方法(我可以调用三次)看起来像这样:

private void PopulateListBox(ListBox ListBoxName, Enum EnumName)
{
    // ... code here!
}

我是一个缺乏经验的程序员,所以尽管我进行了搜索,但我不太确定我在搜索什么。如果之前已经回答过这个问题,我们深表歉意;我同样很高兴能看到一个现有的答案。谢谢!

最佳答案

您需要将枚举类型传递给您的方法

private void PopulateListBox(ListBox ListBoxName, Type EnumType)
{
    foreach (var value in Enum.GetValues(EnumType))
    {
        ListBoxName.Items.Add(value);
    }
    ListBoxName.SelectedIndex=0;
}

这样调用它:

PopulateListBox(lstThree,typeof(EnumThree));

关于c# - 如何避免在 C# 中使用枚举重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19293925/

相关文章:

c# - 智能感知不再有效

ios - 枚举数组和枚举字典之间的映射

c++ - 我可以使用枚举作为结构名称吗?

c# - 在 asp.net webforms 中使用 http put 方法

c# - 如果 IP 地址或主机名是本地主机,如何检查 Powershell?没有域 DNS

c - GStreamer gst_pad_get_offset 和 gst_pad_set_offset 不起作用

javascript - 从具有多个 ID 的单个 JS 对象中获取数据并被搜索引擎索引

button - 创建动态Pinterest按钮?

c# - 枚举作为类属性

c# - 我可以将矿库共享给所有应用程序吗?