하지만 난 이제 데릭쉐퍼드와 마지막 삽입됨 액세스하려면 주요 δ1 사전에 이름을 알지 못하는 것이다. 뻔한 시도.
int LastCount = mydict[mydict.keys[mydict.keys.Count]];
작동하지 않으면 딕티오나리스키스 '때문에' [] - 인덱서 구현하는 않습니다.
그냥 문득 비슷한 클래스용 있는지? 생각해봤죠 사용에 대한 단 더미의 말했지만 구체화하십시오. 이제 내가 내 스스로 만들 수 있지만, ',' Stack< MyStruct> 구조체입니다 그리곤요 사용할 경우, 그 친구는 또 다른 대체 본질적으로 구현하는 대한 사전 [ui_policytable_java_spe_policy] - 인덱서 제지시켜!
, 는 잘못된 점을 @Falanwe 논평을 하고 이 같은 일이 있다.
int LastCount = mydict.Keys.ElementAt(mydict.Count -1);
Ui_policytable_java_spe_policy 러디어드리스티오나리 사용할 수 있습니다.
>. 제이보드 key/value 모음 >. 쌍이 키를 이용할 수 있는 >. 또는 색인입니다.
사전 () 은 해시 테이블, 그래서 알지도 못하면서 순서는 삽입에서!
마지막 삽입됨 궁금해할까봐 확대 등이 주요 꼭 이래야겠어요 제안하세요 사전 라스트케인스테드 값입니다.
E. g.:
public MyDictionary<K, T> : IDictionary<K, T>
{
private IDictionary<K, T> _InnerDictionary;
public K LastInsertedKey { get; set; }
public MyDictionary()
{
_InnerDictionary = new Dictionary<K, T>();
}
#region Implementation of IDictionary
public void Add(KeyValuePair<K, T> item)
{
_InnerDictionary.Add(item);
LastInsertedKey = item.Key;
}
public void Add(K key, T value)
{
_InnerDictionary.Add(key, value);
LastInsertedKey = key;
}
.... rest of IDictionary methods
#endregion
}
그러나 '그레모프 ()' 를 사용할 때 문제가 실행할 수 있도록 계속 시동키는 삽입됨 순서화된 목록니다 이를 극복할 수 있습니다.
그냥, 왜 don& # 39 마지막 주요 삽입됨 재산이잖아 dictionary 클래스를 추가 연장할 수밖에 없다. 다음과 같은 것이 아닐까?
public class ExtendedDictionary : Dictionary<string, int>
{
private int lastKeyInserted = -1;
public int LastKeyInserted
{
get { return lastKeyInserted; }
set { lastKeyInserted = value; }
}
public void AddNew(string s, int i)
{
lastKeyInserted = i;
base.Add(s, i);
}
}
항상 이렇게 할 수 있습니다.
string[] temp = new string[mydict.count];
mydict.Keys.CopyTo(temp, 0)
int LastCount = mydict[temp[mydict.count - 1]]
하지만 난 wouldn& # 39, t 추천합니까 거잖나. # 39 의 마지막 주요 적립율은 장담할 수 없는 there& 삽입됨 끝에 어레이입니다. 켜짐이 MSDN 은 미지정을 오더 키로 및 변경될 수 있습니다. 내 않니다 테스트, 매우 짧은 순서대로 삽입에서 you& 좋은 성과를 거둘 수 있을 것으로 보이지는 않지만, 같은 건물에 있는 이벤트수정적절한 오프하도록; d # 39 다르게 로 스택할 너회가 제안하세요 (하지만, 제가 don& # 39, t 지켜보리니 구조체입니다 합니다 따라 다른 명령문입니다) -또는 알아야 할 경우 단일 변수 캐시에는 그냥 최신 핵심.
하나의 대안이 될 수 있는 키드콜레스티온 내장됩니다 경우 키 값을.
그냥 기본적인 구현 클래스를 작성할 수 있는 방수 사용할 수 있습니다.
So, 문자열, int> Dictionary< 굈 ',' (디스크입니다. isn& # 39, t 아주 좋은 같이 좁히어 isn& # 39 는 주요 kingdome. seattle. 선택해제합니다, int).
private sealed class IntDictionary : KeyedCollection<string, int>
{
protected override string GetKeyForItem(int item)
{
// The example works better when the value contains the key. It falls down a bit for a dictionary of ints.
return item.ToString();
}
}
KeyedCollection<string, int> intCollection = new ClassThatContainsSealedImplementation.IntDictionary();
intCollection.Add(7);
int valueByIndex = intCollection[0];
내가 동의하지 Patrick& # 39 의 두 번째 부분은 그 답이 있다. 설사 일부 테스트에서 삽입에서, 문서 주문하십시오 유지할 것으로 보인다. (및 일반 비헤이비어를 사전 및 대한 해시 () 는 이 오더할 미지정을 밝히고 있다.
사용하려는 경우 불안하다고요 코드 준수해야 하는 파손, 이 기능은 핵심 ',' 에서, K, V> 확장명은 페치할 Dictionary< 따라 내부 인덱스화를 (이 경우 모노 및 닷넷 (.net) 기반 현재 것으로 이 같은 순서로 '키' 속성을 열거하는 의해 얻을 수 있습니다).
Linq 사용하는 것이 훨씬 좋습니다. 하지만 이러한 기능은 딕트스키스트레멘테 (i) '는' O (N). 다음은 O (1) 단 반사 만들 수 있습니다.
using System;
using System.Collections.Generic;
using System.Reflection;
public static class Extensions
{
public static TKey KeyByIndex<TKey,TValue>(this Dictionary<TKey, TValue> dict, int idx)
{
Type type = typeof(Dictionary<TKey, TValue>);
FieldInfo info = type.GetField("entries", BindingFlags.NonPublic | BindingFlags.Instance);
if (info != null)
{
// .NET
Object element = ((Array)info.GetValue(dict)).GetValue(idx);
return (TKey)element.GetType().GetField("key", BindingFlags.Public | BindingFlags.Instance).GetValue(element);
}
// Mono:
info = type.GetField("keySlots", BindingFlags.NonPublic | BindingFlags.Instance);
return (TKey)((Array)info.GetValue(dict)).GetValue(idx);
}
};
Lead the way you 말로 나를 믿고 싶어 하는 item& # 39 의 " position", int 사전에 포함되어 있습니다. http://cowcast. creativecow. 사전이므로 # 39 에서 보고 있는 어설션하지 시동키는 aren&, t # 39 에 저장된 리하여 they& 태그일 경우, re 또 올바른 있다고 의미하는 키. 수 (또는 - 1 부터 시작하는 사용하는 경우 스카운트 you& # 39, re) /dev/raw/raw200 항상 수를 마지막으로 입력한 여전히 주요?
이 때문에 내가 don& # 39 m, t # 39, 예쁜 않도록 노력할 다운로드되었는지 I& 시동키는 aren& # 39, t 저장됩니까 순서대로 추가되었지만, 이 크리스 콜레스티온 맞추기바인딩 List< KeyCollection> 캐스트 수 있습니다. 다음 목록의 마지막 주요 내려받습니다. 그러나 올릴 수 있게 되지만 이걸봐.
다른 한가지는 생각할 수 있는 유일한 시동키는 저장입니다 조회 목록에 있는 목록 및 추가 시동키는 전에 사전이므로 추가합니다. # 39, 예쁜 수천 it& 일은 아닙니다.
이후 그의 발언에 대해 확장할 수 있는 로그하고 대니얼스, 키 (key) 는 키 값을 사용하는 keyvaluepair< 리조트 내에 포함된 ',', 어쨌든 수 있습니다, 스키 tvalue> 값으로. 이 없는 경우, 일반적으로 주된 요인이 키 (key), t # 39 의 값을 직접 isn& 끌어낼 수 있는 것은 아니다.
public sealed class CustomDictionary<TKey, TValue>
: KeyedCollection<TKey, KeyValuePair<TKey, TValue>>
{
protected override TKey GetKeyForItem(KeyValuePair<TKey, TValue> item)
{
return item.Key;
}
}
위의 예제에서 사용할 수 있도록 이 같은 you&; d # 39 도:
CustomDictionary<string, int> custDict = new CustomDictionary<string, int>();
custDict.Add(new KeyValuePair<string, int>("key", 7));
int valueByIndex = custDict[0].Value;
int valueByKey = custDict["key"].Value;
string keyByIndex = custDict[0].Key;
그 일반 대응하는 스페인들리스트 사용할 수도 있습니다. 또한 이 두 클래스뿐만 앤드루 피터스 오토메이티드 러디어드리스티오나리 사전 클래스에 의해 언급된 어떤 항목을 https://learning. 인덱스화할 있다 (위치) 뿐만 아니라 주요 산업별로. 이러한 클래스를 사용하는 방법을 찾을 수 있습니다. [스페인들리스트 클래스] [1], [스페인들리스트 일반 클래스] [2].
[1]: https://msdn.microsoft.com/en-us/library/system.collections.sortedlist% 110%29.aspx 28v = vs. [2]: 110%29.aspx https://msdn.microsoft.com/en-us/library/ms132319%28v = vs.
Key / value 쌍으로 확보하십시오 신앙이니라 됩니다 t 키 값을 얻기 위해 필요한 don& 인덱스할 # 39 에서, 하나의 단순한 기법을 사용할 수 있습니다. 일부 너희가운데 일반 클래스 (불렀는데 이 리스타이) 다음과 같습니다.
class ListArray<T> : List<T[]> { }
또한 구성자를 선언할 수도 있습니다.
class ListArray<T> : List<T[]>
{
public ListArray() : base() { }
public ListArray(int capacity) : base(capacity) { }
}
예를 들어, 읽기 / 쌍 값을 저장할 수 있는 몇 가지 주요 파일이므로 그냥 이용할 수 있도록 실시한 이후 인덱스화할 순서대로 읽을 수 있었다.
ListArray<string> settingsRead = new ListArray<string>();
using (var sr = new StreamReader(myFile))
{
string line;
while ((line = sr.ReadLine()) != null)
{
string[] keyValueStrings = line.Split(separator);
for (int i = 0; i < keyValueStrings.Length; i++)
keyValueStrings[i] = keyValueStrings[i].Trim();
settingsRead.Add(keyValueStrings);
}
}
// Later you get your key/value strings simply by index
string[] myKeyValueStrings = settingsRead[index];
있을 때 발생할 수 있는 리스타이 아니다 그냥 쌍의 키 / 값을 가질 수 있습니다. 수 있는 모든 길이 항목설명프로세서 어레이에는 등 들쭉날쭉한 어레이입니다.