我经常遇到一种情况,我希望拥有一组键/值对。这是一个伪代码的想法:
DataSet MyRequestStatus
{
Accepted = "ACC",
Rejected = "REJ"
}
用法:
InsertIntoTable(MyRequestStatus.Accepted.ToString())
我希望能够使用友好的“MyRequestStatus.Accepted”,但我希望ToString()返回神秘的“ACC”,而不是“已接受”。奖励点,隐式转换,而不是必须调用ToString()。
我还没有找到一种明显的方法来实现这一点。你有什么建议?
答案 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];