需要一种存储Name值对的好方法

时间:2010-11-11 14:40:52

标签: c#

我经常遇到一种情况,我希望拥有一组键/值对。这是一个伪代码的想法:

DataSet MyRequestStatus
{
  Accepted = "ACC",
  Rejected = "REJ"
}

用法:

InsertIntoTable(MyRequestStatus.Accepted.ToString())

我希望能够使用友好的“MyRequestStatus.Accepted”,但我希望ToString()返回神秘的“ACC”,而不是“已接受”。奖励点,隐式转换,而不是必须调用ToString()。

我还没有找到一种明显的方法来实现这一点。你有什么建议?

4 个答案:

答案 0 :(得分:5)

public static class MyRequestStatus
{
    public const string Accepted = "ACC",
                        Rejected = "REJ";
}

答案 1 :(得分:0)

试试这个

public struct MyRequestStatus
{
    public static string Accepted = @"ACC";
    public static string Rejected = @"REJ";
}

答案 2 :(得分:0)

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<string, string> d = new Dictionary<string, string>();
        d.Add("Accepted", "ACC");
        d.Add("Rejected", "REJ");

        string r = d["Rejected"];
    }
}

现在您可以使用整个字典API。

答案 3 :(得分:0)

使用Marc Gravell建议的具有常量字符串的类,或者如果要保留枚举,请设置静态字典以包含映射:

private static Dictionary<MyRequestStatus, string> requestStatusToString = 
   new Dictionary<MyRequestStatus, string>()
{
   { MyRequestStatus.Accepted, "ACC" },
   { MyRequestStatus.Rejected, "REJ" }
};

然后你可以这样做:

MyRequestStatus status = MyRequestStatus.Accepted;
string code = requestStatusToString[status];