1

这是我的最终目标:我想要一种基于程序中注册的任何整数输出工具名称的方法。例如,如果程序找到整数 1001、1002 和 1003,则程序会告诉用户找到了工具 1、工具 2 和工具 3。

我已经使用一个简单的枚举类来实现这一点,其中所有“工具”都被编号并对应于正确的整数。我什至可以将枚举作为名称输出,尽管我想输出一个字符串,最好是可以轻松编辑而无需过多更改整个程序的字符串。如果我现在可以将它们全部编程为工具 1、工具 3 和工具 7,那就太好了,然后在我真正知道我正在使用的工具时返回并更改字符串。

我也已经尝试将 DescriptionAttribute 与此枚举一起使用,但即使已经有了一些问题的帮助,我也无法弄清楚如何通过整数查找枚举,然后输出该枚举的描述。我可以简单地做任何一个,但不能同时做两个。

所以这让我想知道除了使用 Enum 类之外是否还有更好的方法可以处理所有这些问题,我听说 Enum 类在 c# 中没有那么有用。我只想知道有关如何使用枚举类或 c# 中可用于实现此目的的其他方法的任何建议。

如果我需要分享我已经拥有的工作代码,请告诉我。谢谢!

4

3 回答 3

7

我建议使用具有一些属性的工具类;

public class Tool
{
    public string Name { get; set; }
    public string Description { get; set; }
}

然后在处理这些的代码中,我会使用Dictionary<int, Tool>. 然后,如果说您想要工具 1001 的描述,您只需执行以下操作:

  Console.WriteLine(myTools[1001].Description);

当然,您可以只使用 a Dictionary<int, string>,但稍后您可能会发现您需要更多与该工具关联的数据,因此创建一个类更有意义。

于 2013-06-19T21:22:10.450 回答
1

听起来像是字典的好案例

例子:

var tools = new Dictionary<int, string>
{
    {1001, "Tool 1"},
    {1002, "Tool 2"},
    {1003, "Tool 3"},
};

string tool1Name = tools[1001];
//toolName == "Tool 1"
于 2013-06-19T21:23:43.947 回答
0

枚举非常有用。他们有时间和地点,在你的例子中,你真的不应该使用它们。它们以强类型的方式表示一个常量值,并且可以像flags标记它们一样使用。

对于您的情况,上课会起作用。

public class ToolItem
{
    public int Id { get; set; }
    public string Description { get; set; }
    public override ToString() { //...Your logic }
}

然后,您可以使用List<T>. Dictionary<TKey, TValue>等。保存对它们的引用并使用 LINQ 处理集合。

于 2013-06-19T21:24:06.310 回答