ContainsKey()
및 TryGetValue()
으로 재생할 때 GetHashCode()
및 기타 사항을 수정하는 데 많은 참고 자료를 보았습니다. 그러나 이러한 모든 문제와 예제는 모두 모호한 사용자 별 키.C# Dictionary ContainsKey/TryGetValue가 작동하지 않습니다.
나는 기본이 Dictionary<long, object>
입니다. ContainsKey()
또는 TryGetValue()
중 하나를 사용하려고 시도하는 경우 항상 정상적인 결과를 얻지 못하고 누락 된 항목을 채우려 고 시도하는 것으로 이동하지 않습니다 (기술적 인 경우).
당신은 짐작 했었습니다. 기존의 키에 대해 불평합니다. 음, 존재하기 때문입니다.
그렇다면 기본 long
키와 일치하는 문제가있는 이유는 무엇이며 어떻게 작동합니까?
편집 : 코드. 나는 여러 가지 것을 시도했다. 또한
public void Add(long id)
{
if (AreaDataDict.ContainsKey(id)) return;
AreaData ad = new AreaData(id);
ad.Load();
AreaDataDict.Add(id, ad);
}
:
public void Add(long id)
{
AreaData areaData;
if (AreaDataDict.TryGetValue(id, out areaData)) return;
AreaData ad = new AreaData(id);
ad.Load();
AreaDataDict.Add(id, ad);
}
편집 2 : 자신의 가장 기본적인 형태에서 어떤 주요 변경 사항이 발생하지 않습니다. 값을 찾지 못하면 추가하는 것 외에는 데이터가이에서만 읽혀집니다.
실제로 실패하면 예제 코드로 제공 할 수 있습니까? 우리가 문제를 재현 할 수 없으면 그냥 짐작할뿐입니다. – MarcinJuraszek
저는 99.99 %의 코드에서이 버그를 발견했습니다. 유감스럽게도 해당 코드를 제공하지 않으므로 도움을받을 수 없습니다. 문제를 보여주는 짧지 만 완전한 프로그램을 제공하십시오. 우리는 그것의 예제를 쉽게 * 제공 할 수 있지만 그 누구도 놀라지 않을 것입니다. –
코드 예는 매우 유용합니다. 우리는 짐작할 수 있습니다. –