簡體   English   中英

需要一種存儲Name值對的好方法

[英]Need a good way to store Name value pairs

我經常遇到一種我希望擁有一組鍵/值對的情況。 這是一個偽代碼的想法:

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

用法:

InsertIntoTable(MyRequestStatus.Accepted.ToString())

我希望能夠使用友好的“MyRequestStatus.Accepted”,但我希望ToString()返回神秘的“ACC”,而不是“接受”。 獎勵點,隱式轉換而不是必須調用ToString()。

我沒有找到一種明顯的方法來實現這一點與Enums。 你有什么建議?

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

試試這個

public struct MyRequestStatus
{
    public static string Accepted = @"ACC";
    public static string Rejected = @"REJ";
}
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了。

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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM