답변:
주어진 키에서 사전을 가리키고 새로운 값을 지정하십시오.
myDictionary[myKey] = myNewValue;
인덱스로 키에 액세스하면 가능합니다
예를 들면 다음과 같습니다.
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary["test"] = 1;
dictionary["test"] += 1;
Console.WriteLine (dictionary["test"]); // will print 2
++dictionary["test"];
또는 dictionary["test"]++;
키 값이 "test"인 사전에 항목이있는 경우에만 쓸 수 있습니다 ( 예 : if(dictionary.ContainsKey("test")) ++dictionary["test"];
else dictionary["test"] = 1; // create entry with key "test"
이 접근법을 따를 수 있습니다 :
void addOrUpdate(Dictionary<int, int> dic, int key, int newValue)
{
int val;
if (dic.TryGetValue(key, out val))
{
// yay, value exists!
dic[key] = val + newValue;
}
else
{
// darn, lets add the value
dic.Add(key, newValue);
}
}
여기에 도달하는 가장자리는 사전에 한 번의 액세스로 해당 키의 값을 확인하고 얻는 것입니다. ContainsKey
존재를 확인하고 를 사용 하여 값을 업데이트하는 데 사용 dic[key] = val + newValue;
하면 사전에 두 번 액세스합니다.
dic.Add(key, newValue);
use를 사용할 수 있습니다 dic[key] = newvalue;
.
LINQ : Access를 사용하여 키 사전을 만들고 값을 변경하십시오.
Dictionary<string, int> dict = new Dictionary<string, int>();
dict = dict.ToDictionary(kvp => kvp.Key, kvp => kvp.Value + 1);
키가 foo[x] = 9
어디에 x
있고 9가 값인 것처럼 인덱스로 업데이트하는 방법은 다음과 같습니다.
var views = new Dictionary<string, bool>();
foreach (var g in grantMasks)
{
string m = g.ToString();
for (int i = 0; i <= m.Length; i++)
{
views[views.ElementAt(i).Key] = m[i].Equals('1') ? true : false;
}
}
업데이트 -존재 만 수정합니다. 인덱서 사용의 부작용을 피하려면 다음을 수행하십시오.
int val;
if (dic.TryGetValue(key, out val))
{
// key exist
dic[key] = val;
}
업데이트 또는 ( 값이 dic에 없으면 새로 추가 )
dic[key] = val;
예를 들어 :
d["Two"] = 2; // adds to dictionary because "two" not already present
d["Two"] = 22; // updates dictionary because "two" is now present
이것은 당신을 위해 일할 수 있습니다 :
시나리오 1 : 기본 유형
string keyToMatchInDict = "x";
int newValToAdd = 1;
Dictionary<string,int> dictToUpdate = new Dictionary<string,int>{"x",1};
if(!dictToUpdate.ContainsKey(keyToMatchInDict))
dictToUpdate.Add(keyToMatchInDict ,newValToAdd );
else
dictToUpdate[keyToMatchInDict] = newValToAdd; //or you can do operations such as ...dictToUpdate[keyToMatchInDict] += newValToAdd;
시나리오 2 : 값으로 목록에 사용한 접근 방식
int keyToMatch = 1;
AnyObject objInValueListToAdd = new AnyObject("something for the Ctor")
Dictionary<int,List<AnyObject> dictToUpdate = new Dictionary<int,List<AnyObject>(); //imagine this dict got initialized before with valid Keys and Values...
if(!dictToUpdate.ContainsKey(keyToMatch))
dictToUpdate.Add(keyToMatch,new List<AnyObject>{objInValueListToAdd});
else
dictToUpdate[keyToMatch] = objInValueListToAdd;
도움이 필요한 사람에게 유용하기를 바랍니다.