액세스 통해 딕티오나리스키스 숫자 인덱스 키

39, m ',', 문자열, int&gt Dictionary&lt i& 사용할 수 있는 'int' 은 주요.

하지만 난 이제 데릭쉐퍼드와 마지막 삽입됨 액세스하려면 주요 δ1 사전에 이름을 알지 못하는 것이다. 뻔한 시도.

int LastCount = mydict[mydict.keys[mydict.keys.Count]];

작동하지 않으면 딕티오나리스키스 '때문에' [] - 인덱서 구현하는 않습니다.

그냥 문득 비슷한 클래스용 있는지? 생각해봤죠 사용에 대한 단 더미의 말했지만 구체화하십시오. 이제 내가 내 스스로 만들 수 있지만, ',' Stack&lt MyStruct&gt 구조체입니다 그리곤요 사용할 경우, 그 친구는 또 다른 대체 본질적으로 구현하는 대한 사전 [ui_policytable_java_spe_policy] - 인덱서 제지시켜!

질문에 대한 의견 (1)
해결책

, 는 잘못된 점을 @Falanwe 논평을 하고 이 같은 일이 있다.

int LastCount = mydict.Keys.ElementAt(mydict.Count -1);
해설 (7)

Ui_policytable_java_spe_policy 러디어드리스티오나리 사용할 수 있습니다.

&gt. 제이보드 key/value 모음 &gt. 쌍이 키를 이용할 수 있는 &gt. 또는 색인입니다.

해설 (2)

사전 () 은 해시 테이블, 그래서 알지도 못하면서 순서는 삽입에서!

마지막 삽입됨 궁금해할까봐 확대 등이 주요 꼭 이래야겠어요 제안하세요 사전 라스트케인스테드 값입니다.

E. g.:

public MyDictionary : IDictionary
{
    private IDictionary _InnerDictionary;

    public K LastInsertedKey { get; set; }

    public MyDictionary()
    {
        _InnerDictionary = new Dictionary();
    }

    #region Implementation of IDictionary

    public void Add(KeyValuePair 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

}

그러나 '그레모프 ()' 를 사용할 때 문제가 실행할 수 있도록 계속 시동키는 삽입됨 순서화된 목록니다 이를 극복할 수 있습니다.

해설 (0)

그냥, 왜 don& # 39 마지막 주요 삽입됨 재산이잖아 dictionary 클래스를 추가 연장할 수밖에 없다. 다음과 같은 것이 아닐까?

public class ExtendedDictionary : Dictionary
{
    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);
    }
}
해설 (2)

항상 이렇게 할 수 있습니다.

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 지켜보리니 구조체입니다 합니다 따라 다른 명령문입니다) -또는 알아야 할 경우 단일 변수 캐시에는 그냥 최신 핵심.

해설 (0)

I think you can do 이 같은 일이, 문법 형식이 잘못되었을 때, C # 받을시간은 낼수있지않나 아벤트 마지막 항목을 afaq

Dictionary.KeyCollection keys = mydict.keys;
string lastKey = keys.Last();

대신 max 값을 얻기 위해 사용하거나 맥스야 마지막 어느쪽이야 꼭 맞는 코드가 더 잘 모르겠습니다.

해설 (2)

하나의 대안이 될 수 있는 키드콜레스티온 내장됩니다 경우 키 값을.

그냥 기본적인 구현 클래스를 작성할 수 있는 방수 사용할 수 있습니다.

So, 문자열, int&gt Dictionary&lt 굈 ',' (디스크입니다. isn& # 39, t 아주 좋은 같이 좁히어 isn& # 39 는 주요 kingdome. seattle. 선택해제합니다, int).

private sealed class IntDictionary : KeyedCollection
{
    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 intCollection = new ClassThatContainsSealedImplementation.IntDictionary();

intCollection.Add(7);

int valueByIndex = intCollection[0];
해설 (1)

내가 동의하지 Patrick& # 39 의 두 번째 부분은 그 답이 있다. 설사 일부 테스트에서 삽입에서, 문서 주문하십시오 유지할 것으로 보인다. (및 일반 비헤이비어를 사전 및 대한 해시 () 는 이 오더할 미지정을 밝히고 있다.

39, re 그냥 you& 묻는 문제 해결을 위해 주문 따라 시동키는. 자신의 추가 부기 (as 패트릭 단 하나의 주요 변수가 될 것 "이라고 마지막 추가되든지) 를 합니다. 또한 모든 방법에 의해 마지막으로 don& # 39, t be 하고 계신 것과 관련하여 Max 를 사전 등 주요 비교자 (I& # 39, m not 확실해).

해설 (0)

사용하려는 경우 불안하다고요 코드 준수해야 하는 파손, 이 기능은 핵심 ',' 에서, K, V&gt 확장명은 페치할 Dictionary&lt 따라 내부 인덱스화를 (이 경우 모노 및 닷넷 (.net) 기반 현재 것으로 이 같은 순서로 '키' 속성을 열거하는 의해 얻을 수 있습니다).

Linq 사용하는 것이 훨씬 좋습니다. 하지만 이러한 기능은 딕트스키스트레멘테 (i) '는' O (N). 다음은 O (1) 단 반사 만들 수 있습니다.

using System;
using System.Collections.Generic;
using System.Reflection;

public static class Extensions
{
    public static TKey KeyByIndex(this Dictionary dict, int idx)
    {
        Type type = typeof(Dictionary);
        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);
    }
};
해설 (1)

Lead the way you 말로 나를 믿고 싶어 하는 item& # 39 의 &quot position&quot, int 사전에 포함되어 있습니다. http://cowcast. creativecow. 사전이므로 # 39 에서 보고 있는 어설션하지 시동키는 aren&, t # 39 에 저장된 리하여 they& 태그일 경우, re 또 올바른 있다고 의미하는 키. 수 (또는 - 1 부터 시작하는 사용하는 경우 스카운트 you& # 39, re) /dev/raw/raw200 항상 수를 마지막으로 입력한 여전히 주요?

39 의 경우, 정확한 이유는 that& 유지됩니까 can& # 39, t, lt, int, string&amp Dictionary&amp 대신 사용할 수 있습니다, gt; 사용할 수 있도록 미딕트 [미딕트. 크리스 스카운트]?

해설 (0)

이 때문에 내가 don& # 39 m, t # 39, 예쁜 않도록 노력할 다운로드되었는지 I& 시동키는 aren& # 39, t 저장됩니까 순서대로 추가되었지만, 이 크리스 콜레스티온 맞추기바인딩 List&lt KeyCollection&gt 캐스트 수 있습니다. 다음 목록의 마지막 주요 내려받습니다. 그러나 올릴 수 있게 되지만 이걸봐.

다른 한가지는 생각할 수 있는 유일한 시동키는 저장입니다 조회 목록에 있는 목록 및 추가 시동키는 전에 사전이므로 추가합니다. # 39, 예쁜 수천 it& 일은 아닙니다.

해설 (3)

이후 그의 발언에 대해 확장할 수 있는 로그하고 대니얼스, 키 (key) 는 키 값을 사용하는 keyvaluepair&lt 리조트 내에 포함된 ',', 어쨌든 수 있습니다, 스키 tvalue&gt 값으로. 이 없는 경우, 일반적으로 주된 요인이 키 (key), t # 39 의 값을 직접 isn& 끌어낼 수 있는 것은 아니다.

39 어졌다면 it&; d 다음과 같습니다.

public sealed class CustomDictionary
  : KeyedCollection
{
  protected override TKey GetKeyForItem(KeyValuePair item)
  {
    return item.Key;
  }
}

위의 예제에서 사용할 수 있도록 이 같은 you&; d # 39 도:

CustomDictionary custDict = new CustomDictionary();

custDict.Add(new KeyValuePair("key", 7));

int valueByIndex = custDict[0].Value;
int valueByKey = custDict["key"].Value;
string keyByIndex = custDict[0].Key;
해설 (0)

그 일반 대응하는 스페인들리스트 사용할 수도 있습니다. 또한 이 두 클래스뿐만 앤드루 피터스 오토메이티드 러디어드리스티오나리 사전 클래스에 의해 언급된 어떤 항목을 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.

해설 (0)

아닐 수도 있지만, 매우 편리한 사용을 위한 사전 작업 지수는 유사한 배열입니다 케이바루파이어 참조 할 수 있습니다.

ex. [] ',' KeyValuePair&lt, 문자열, string&gt 필터란.

해설 (0)

39 의 인텔®visual Studio& [우저보리스] (https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/16494583-generic-ordereddictionary) 는 https://partner. microsoft. [일반 러디어드리스티오나리 구축상의] (https://github.com/mattmc3/dotmore/blob/master/dotmore/Collections/Generic/OrderedDictionary.cs) 에 도트모어.

Key / value 쌍으로 확보하십시오 신앙이니라 됩니다 t 키 값을 얻기 위해 필요한 don& 인덱스할 # 39 에서, 하나의 단순한 기법을 사용할 수 있습니다. 일부 너희가운데 일반 클래스 (불렀는데 이 리스타이) 다음과 같습니다.

class ListArray : List { }

또한 구성자를 선언할 수도 있습니다.

class ListArray : List
{
    public ListArray() : base() { }
    public ListArray(int capacity) : base(capacity) { }
}

예를 들어, 읽기 / 쌍 값을 저장할 수 있는 몇 가지 주요 파일이므로 그냥 이용할 수 있도록 실시한 이후 인덱스화할 순서대로 읽을 수 있었다.

ListArray settingsRead = new ListArray();
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];

있을 때 발생할 수 있는 리스타이 아니다 그냥 쌍의 키 / 값을 가질 수 있습니다. 수 있는 모든 길이 항목설명프로세서 어레이에는 등 들쭉날쭉한 어레이입니다.

해설 (0)