문제

제목은 주로 말합니다. C#의 기본 사전 클래스에 간단한 확장 방법을 추가하고 싶습니다. 처음에 나는 스택 방법과 같은 종류의 팝 (tkey 키)을 지명하려고했지만 조회에 사용할 키를 수용합니다.

그런 다음 (Tkey Key)를 가져 가려고했지만 같은 이름의 LINQ 메소드와 일치합니다. C# 3.0이 당신이 할 수 있지만 마음에 들지 않습니다.

그렇다면 팝을 고수하거나 "요소 찾기 및 제거"에 대한 더 나은 용어가 있습니까?

(나는이 질문을하는 것이 부끄러운 느낌이 든다. 그런 사소한 문제처럼 보이지만 표준을 사용하는 것을 좋아하고 많은 언어/환경에 대한 폭 넓은 경험이 없습니다.)

편집 : 죄송합니다. 더 많은 설명을해야합니다 ....이 경우 새 메소드로 확장하는 클래스에 의해 이미 정의되어 있기 때문에 제거라는 용어를 사용할 수 없습니다.

편집 2 : 좋아, 여기 지금까지 내가 가진 것들이있다.

public static TValue Extract<TKey, TValue>
(
    this Dictionary<TKey, TValue> dict,
    TKey key
)
{
    TValue value = dict[key];
    dict.Remove(key);
    return value;
}

public static bool TryExtract<TKey, TValue>
(
    this Dictionary<TKey, TValue> dict,
    TKey key,
    out TValue value
)
{
    if( !dict.TryGetValue(key, out value) )
    {
        return false;
    }
    dict.Remove(key);
    return true;
}
도움이 되었습니까?

해결책

나는 생각한다 발췌, 고고학자와 같은 찾다 땅의 미라, 제거하십시오 그리고 반품 박물관에 :)

다른 팁

특히 잘못된 것 이미 제공된 (키) 방법을 제거 하시겠습니까?

오 잠깐, 제거 된 요소도 반환하고 싶습니까? 어때

object valueRemoved = someDictionary.RemoveElement(key)

쉽게 구현되었습니다

if (!dict.ContainsKey(key))
{
    return null;
}
object val = dict[key];
dict.Remove(key);
return val;

나의 첫 번째 추측은 "테이크"였을 것입니다. 그러나 당신이 지적했듯이, 그것은 이미 취해졌습니다. 다음 제안은 "추출"또는 "분리"이지만 모호 할 수 있습니다.

"철수"또는 "풀 아웃"은 어떻습니까?

이 조치는 기존 협업 플랫폼 (주로 학계)을 약간 연상시키는 것입니다. 린다. 그 환경에서, 당신이 말하는 것은 "in"이라고 불릴 것입니다. 그러나 그것은 그것의 끔찍한 이름입니다. 그들은 기본적으로 공유 튜플 공간의 관점에서 이름을지었습니다. 그래서, 결코 신경 쓰지 않습니다.

추출물은 좋고 "팝"도 꽤 분명합니다 (스택이 아니더라도 누구나 당신이하고있는 일을 알게 될 것입니다).

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