문제

enum 유형 빠른/보다 효율 문자열 유형으로 사용될 때 사전에 키?

IDictionary<string,object> or IDictionary<enum,object>

사실의 문제로는 데이터의 유형은 가장 적합한 사전으로 열쇠 그리고 왜?

다음 사항을 고려하십시오: 참고:5 속성에 대한 단순

struct MyKeys
{
   public string Incomplete = "IN"; 
   public string Submitted = "SU"; 
   public string Processing="PR"; 
   public string Completed = "CO"; 
   public string Closed = "CL";   
}

enum MyKeys
{
   Incomplete, 
   Submitted, 
   Processing, 
   Completed, 
   Closed
}

위의 더 나은 것으로 사용하는 경우는 키에 사전!

도움이 되었습니까?

해결책

확실히 enum 버전이 더 좋습니다 (물론 둘 다 적용 가능하고 이해가 될 때). 성능만이 아닙니다 (더 나을 수 있습니다. Rashack의 아주 좋은 의견을보십시오) 컴파일 시간을 확인하고 클리너 코드가 나타납니다.

사용하여 비교 문제를 우회 할 수 있습니다 Dictionary<int, object> 그리고 캐스팅 enum 열쇠 intS 또는 사용자 정의 비교 지정.

다른 팁

정확성에 초점을 맞추면서 시작해야한다고 생각합니다. 이것은 프로그램 내에서 발생할 수있는 경미한 성능 차이 간의 최소한의 차이보다 훨씬 중요합니다. 이 경우 나는 당신의 유형의 적절한 표현에 초점을 맞출 것입니다 (Enum이 가장 좋은 것 같습니다). 그런 다음 나중에 응용 프로그램을 프로파일 링하고 문제가있는 경우에만 문제를 해결해야합니다.

프로세스 후반에 코드를 더 빨리 만드는 것은 일반적으로 간단한 프로세스입니다. Skolima가 제공 한 링크를 사용하십시오. 당신이 열거를 선택했다면, 잠재적인 응용 프로그램의 성능 문제. 여기서 잠재력이라는 단어를 강조하고 싶습니다. 이것은 NHibernate에게는 확실히 문제 였지만 프로그램에 문제가되는지 여부는 사용에 의해서만 결정됩니다.

반면에, 프로세스의 뒷부분에서 코드를 더 정확하게 만드는 것은 더 어려운 경향이 있습니다. 충분히 큰 문제에서 사람들은 이전 나쁜 행동의 부작용에 대한 의존성을 취하기 시작한다는 것을 알게 될 것입니다. 이로 인해 다른 구성 요소를 깨지지 않으면 서 수정 코드가 만들어 질 수 있습니다.

Enum을 사용하여 더 깨끗하고 더 좋은 코드를 얻지 만 성능에 관심이있는 경우 사용자 정의 비교를 제공하십시오. http://ayende.com/blog/archive/2009/02/21/dictionaryltenumtgt-puzzler.aspx .

적용되지는 않지만 ...

열거가 있음을 알고 있어야합니다 편집 ~처럼 상수 이는 모든 어셈블리의 재배치를 유발할 수있는 열거가 변경되면 열거를 참조 할 수 있습니다. (즉, 상수는 그것을 사용하는 모든 어셈블리에 컴파일 시간에 하드 코딩됩니다).

내가 생각했던 것과 열거 버전은 빠릅니다.후드 에서 사전에 참조에 의해 모든 것의 차이.내 생각은 그것이 느린 생성에 차이를 위한 문자열입니다.그러나,이것은 아마도 무시할 정도로 느리게,그리고 가장 확실히 빠른 무엇보다도 다음과 같은 문자열이 비교합니다.동의함으로 다른 포스터는 말했다 enum 입 청소기입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top