키 값 쌍에 문자열과 int 값을 저장합니다.키 값 쌍의 기존 값 찾기
var list = new List<KeyValuePair<string, int>>();
것은 내가 대신 새 키를 추가하는 값으로 추가 할 필요가있는 경우 나, 문자열 (키)가 이미 목록에 있는지 확인해야 추가하는 동안.
확인하고 추가하는 방법은 무엇입니까?
키 값 쌍에 문자열과 int 값을 저장합니다.키 값 쌍의 기존 값 찾기
var list = new List<KeyValuePair<string, int>>();
것은 내가 대신 새 키를 추가하는 값으로 추가 할 필요가있는 경우 나, 문자열 (키)가 이미 목록에 있는지 확인해야 추가하는 동안.
확인하고 추가하는 방법은 무엇입니까?
대신 목록 당신이 Dictionary를 사용하여 확인할 수 있습니다 사용 , 그리고 열쇠를 찾으십시오. 간단히 해시 테이블을 사용할 수 있습니다.
고객님의 요구 사항은 정확히 Dictionary
입니다.
Dictionary<string, string> openWith =
new Dictionary<string, string>();
// Add some elements to the dictionary. There are no
// duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe");
// If a key does not exist, setting the indexer for that key
// adds a new key/value pair.
openWith["doc"] = "winword.exe";
지도는 매우 자바 어로 p – leppie
@leppie yup, 고정되어 있습니다. C++/Java 세계에서 더 많은 것입니다. –
지도와 동일한 C#입니까? – Olivarsham
dictonary를 사용하십시오. Dictionary in C#와 나는 당신이 Dictonary in .net
Dictionary<string, int> dictionary =
new Dictionary<string, int>();
dictionary.Add("cat", 2);
dictionary.Add("dog", 1);
dictionary.Add("llama", 0);
dictionary.Add("iguana", -1);
확인이 게시물을 읽을하는 것이 좋습니다. 이 contains key 다음 기존 키
int newValue = 10;
Dictionary<string, int> dictionary = new Dictionary<string, int>();
if (dictionary.ContainsKey("key"))
dictionary["key"] = dictionary["key"] + newValue;
당신이 목록을 사용해야하는 경우 foreach는해야 목록에 새 값을 추가하는 경우 ContainsKey이 ContainsKey
if (dictionary.ContainsKey("key"))
dictionary["key"] = dictionary["key"] + yourValue;
확실히 사전은 귀하의 경우에 적합합니다. KeyValue<string,int>
클래스의 값은 변경할 수 없으므로 수정할 수 없습니다.
그래도 여전히 List<KeyValuePair<string, int>>();
을 사용하려는 경우에도 마찬가지입니다. IEqualityComparer<KeyValuePair<string, int>>
을 사용할 수 있습니다. 코드는 비슷합니다. 하지 좋은 방법 소리 않는
var list = new List<KeyValuePair<string, int>>();
string checkKey = "my string";
if (list.Contains(new KeyValuePair<string, int>(checkKey, int.MinValue), new KeyComparer()))
{
KeyValuePair<string, int> item = list.Find((lItem) => lItem.Key.Equals(checkKey));
list.Remove(item);
list.Add(new KeyValuePair<string, int>("checkKey", int.MinValue));// add new value
}
처럼
public class KeyComparer : IEqualityComparer<KeyValuePair<string, int>>
{
public bool Equals(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return x.Key.Equals(y.Key);
}
public int GetHashCode(KeyValuePair<string, int> obj)
{
return obj.Key.GetHashCode();
}
}
는 사용이에 포함되어 있습니다.
희망이 정보는 ..
그럼 왜 '사전'을 사용하지 않습니까? – leppie
'KeyValuePair'는 불변입니다. 기존 항목을 제거하고 값을 업데이트 할 때마다 새 항목을 만들어야합니다. 그래서 '사전'이 답변에서 주어진 것보다 훨씬 낫습니다. –
mellamokb
고마워, 나는 사전과 함께 갈거야. – Olivarsham