[c#] C #에서 상수 사전 만들기



2 Answers

현재 프레임 워크에는 소중한 몇 개의 불변 컬렉션이 있습니다. .NET 3.5에서는 상대적으로 통증이없는 옵션을 생각할 수 있습니다.

Enumerable.ToLookup() 사용하십시오. Lookup<,> 클래스는 불변입니다 (그러나 rhs에는 다중 값을가집니다). 당신은 Dictionary<,> 에서 이것을 아주 쉽게 할 수 있습니다 :

    Dictionary<string, int> ids = new Dictionary<string, int> {
      {"abc",1}, {"def",2}, {"ghi",3}
    };
    ILookup<string, int> lookup = ids.ToLookup(x => x.Key, x => x.Value);
    int i = lookup["def"].Single();
Question

string s를 int 매핑하는 상수 를 생성하는 가장 효율적인 방법은 무엇입니까?

내가 const 사전을 사용하여 시도했지만 그게 잘되지 않았다.

나는 적절한 의미론을 가진 불변의 래퍼 를 구현할 수 있지만, 여전히 완전히 옳은 것처럼 보이지는 않는다.

요청한 사람들을 위해 생성 된 클래스에서 IDataErrorInfo 를 구현하고 있으며 columnName을 내 디스크립터 배열로 룩업 할 방법을 찾고 있습니다.

나는 스위치가 문자열을 받아들이는 것을 인식하지 못했다. (그래서 테스트 할 때 오타가된다!) 그래서 내가 사용할 것이다. 감사!




왜 안돼 :

public class MyClass
{
    private Dictionary<string, int> _myCollection = new Dictionary<string, int>() { { "A", 1 }, { "B", 2 }, { "C", 3 } };

    public IEnumerable<KeyValuePair<string,int>> MyCollection
    {
        get { return _myCollection.AsEnumerable<KeyValuePair<string, int>>(); }
    }
}



이것은 "CONST 사전"에 접근 할 수있는 가장 가까운 것입니다 :

public static int GetValueByName(string name)
{
    switch (name)
    {
        case "bob": return 1;
        case "billy": return 2;
        default: return -1;
    }
}

컴파일러는 코드를 가능한 한 깨끗하게 만들 정도로 똑똑 할 것입니다.




Related