这是我的最终目标:我希望能够根据程序中注册的任何整数输出工具名称。例如,如果程序找到整数1001,1002和1003,则程序会告诉用户已找到工具1,工具2和工具3。
我已经使用一个简单的枚举类来实现这一点,其中所有“工具”都被编号并且对应于正确的整数。我甚至可以输出枚举作为名称,虽然我想输出一个字符串,最好是一个可以轻松编辑的字符串,而不必过多地更改整个程序。就像我现在可以将其全部编程为工具1,工具3和工具7一样好,然后返回并在我实际知道我正在使用的工具时更改字符串。
我也已尝试将DescriptionAttribute与此枚举一起使用,但即使已经有几个问题的帮助,我也无法弄清楚如何通过整数查找枚举,然后输出描述枚举。我可以做任何一个,或者两个,但不是两个。
所以这让我想知道除了使用Enum类之外是否有更好的方法可以处理所有这些,我听说它在c#中没用。我只想知道有关如何使用枚举类或c#中的其他方法来实现此目的的任何建议。
如果我需要分享我已有的工作代码,请告诉我。谢谢!
答案 0 :(得分:7)
我建议使用具有一些属性的工具类;
public class Tool
{
public string Name { get; set; }
public string Description { get; set; }
}
然后在处理这些内容的代码中,我会使用Dictionary<int, Tool>
。然后,如果您想要工具1001的描述,您只需:
Console.WriteLine(myTools[1001].Description);
当然你可以使用Dictionary<int, string>
,但稍后你可能会发现你需要更多与该工具相关的数据,因此创建一个类更有意义。
答案 1 :(得分:1)
示例:
var tools = new Dictionary<int, string>
{
{1001, "Tool 1"},
{1002, "Tool 2"},
{1003, "Tool 3"},
};
string tool1Name = tools[1001];
//toolName == "Tool 1"
答案 2 :(得分: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>
。 {{1}}等等。持有对它们的引用并使用LINQ来处理集合。