문제

구현을 다루는 스택 오버플로에 몇 가지 스레드가 있습니다. .NET 및 C#의 우선 순위.

내 문제는보다 기본적인 특성입니다. .NET 프레임 워크에 상자에서 우선 순위 대기열이없는 이유는 무엇입니까? C ++ 표준 라이브러리조차도 하나가 있습니다.

도움이 되었습니까?

해결책

얼마 전에 질문이있었습니다 (C#이 C ++와 같은 비회원 기능을 허용하는 이유) Eric Lippert가 a 블로그 게시물 이유에 대해. 그것에서 그는 다음과 같이 설명합니다.

"C#이 기능 X를 구현하지 않는 이유는 무엇입니까?"라고 묻습니다. 항상. 대답은 항상 동일합니다. 아무도 해당 기능을 설계, 지정, 구현, 테스트, 문서화 및 배송하지 않았기 때문입니다. 기능을 수행하기 위해서는 6 가지가 필요합니다. 그들 모두는 엄청난 시간, 노력 및 돈이 들었습니다. 기능은 저렴하지 않으며, 우리는 제한된 시간, 노력 및 돈 예산을 고려할 때 사용자에게 최상의 이점을 제공하는 기능 만 배송하기 위해 매우 열심히 노력합니다.

의심하다 그것이 아마도 .NET이 우선 순위 대기열과 함께 배송되지 않는 이유에 대한 답일 것입니다. 시간, 노력, 돈, 요구 (?)를 구현할 수있는 충분한 시간이 없었습니다.

다른 팁

.NET 4.0 소개 a SortedSet<T> 클래스와 함께 ISet<T> 에 의해 구현되는 인터페이스 SortedSet<T> 그리고 HashSet<T>. 이것은 분명히 자신의 구현이 더 간단하게 만들 것입니다. PriorityQueue<T> 수업.

그러나 여전히 아니요 IQueue<T> 최소한 기본 BCL보다 우선 순위 대기열 또는 기타 구현의 필요성을 인정하는 인터페이스 Queue<T>. 마찬가지로, 아니요 IStack<T>.

개인적으로 나는 기존 클래스에서 간단한 인터페이스를 추출하는 데 드는 디자인/사양/구현/테스트/문서 비용이 실제로 매우 낮아야하기 때문에 이러한 가장 기본적인 인터페이스 중 일부가 실망스럽고 근시안적으로 부족하다는 것을 알게됩니다.

public interface IQueue<T> : IEnumerable<T>, ICollection, IEnumerable
{
    T Dequeue();
    void Enqueue(T item);
    T Peek();
}

거기, 봐요? 난 끝냈어.

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