Best way to deliver static HashTable C #

As an example, I have the following:

public enum HttpRequestHeader
{
  Accept,
  AcceptCharset
}

public static class HTTP
{
  public static Hashtable HttpRequestHeaderString
  {
    get
    {
      Hashtable returnHashtable = new Hashtable();
      returnHashtable.Add(HttpRequestHeader.Accept,"Accept");
      returnHashtable.Add(HttpRequestHeader.AcceptCharset,"Accept-Charset");
      return returnHashtable;
    }
  }
}

I get access:

string HttpRequestHeaderString
    = HTTP.HttpRequestHeaderStrings[HttpRequestHeader.Accept]

many times. Since this is static HashTable, is there a better way to provide the same functionality more efficiently?

I understand that I can implement this specific solution using a different type of collection, but if I want to use HashTable, what options exist for me?

Thanks so much in advance SO!

+3
source share
2 answers

, ? , . , Accept AcceptCharset, , , switch.

, Hashtable - ? ?

. , - , , . , HttpRequestHeader, . :

public static class HTTP
{
    public static string GetHeaderString(HttpRequestHeader header)
    {
        // Use a dictionary here if you want. The API is the important bit

        switch (header)
        {
            case HttpRequestHeader.Accept: return "Accept";
            case HttpRequestHeader.AcceptCharset: return "Accept-Charset";
            default: throw new KeyNotFoundException(header.ToString());
        }
    }
}

- Java:

public sealed class RequestHeader
{
    public static RequestHeader Accept = new RequestHeader("Accept");
    public static RequestHeader AcceptCharset = 
        new RequestHeader("Accept-Charset");

    private readonly string name;

    private RequestHeader(string header)
    {
        this. name = name;
    }

    public string Name
    {
        get { return name; }
    }
}

null, RequestHeader, . (Enums , - ((HttpRequestHeader)-1) ... , .)

EDIT: , # 3 ( ), :

public static class HTTP
{
    private static readonly Dictionary<HttpRequestHeader, string> Headers =
        new Dictionary<HttpRequestHeader, string>
    {
        ( HttpRequestHeader.Accept, "Accept" ),
        ( HttpRequestHeader.AcceptCharset, "Accept-Charset" )
    };

    public static string GetHeaderString(HttpRequestHeader header)
    {
        return Headers[header];
    }
}
+6

-, :

public static class Http
{
    public const string HttpRequestAccept = "Accept";
    public const string HttpRequestAcceptCharset = "Accept-Charset";
}
+3

Source: https://habr.com/ru/post/1710335/


All Articles