Comment puis-je obtenir la valeur du dictionnaire par clé sur la fonction
mon code de fonction est ceci (et la commande ce que j'essaye mais n'a pas fonctionné):
static void XML_Array(Dictionary<string, string> Data_Array)
{
String xmlfile = Data_Array.TryGetValue("XML_File", out value);
}
mon code de bouton est-ce
private void button2_Click(object sender, EventArgs e)
{
Dictionary<string, string> Data_Array = new Dictionary<string, string>();
Data_Array.Add("XML_File", "Settings.xml");
XML_Array(Data_Array);
}
Je veux quelque chose comme ça:
sur XML_Array
fonction à être
string xmlfile = Settings.xml
C'est aussi simple que ça:
String xmlfile = Data_Array["XML_File"];
Notez que si le dictionnaire n'a pas de clé égale à "XML_File"
, ce code lève une exception. Si vous voulez vérifier en premier, vous pouvez utiliser TryGetValue comme ceci:
string xmlfile;
if (!Data_Array.TryGetValue("XML_File", out xmlfile)) {
// the key isn't in the dictionary.
return; // or whatever you want to do
}
// xmlfile is now equal to the value
Ce n'est pas comme cela que fonctionne la TryGetValue
. Il renvoie true
ou false
selon que la clé est trouvée ou non, et définit son paramètre out
sur la valeur correspondante si la clé est présente.
Si vous voulez vérifier si la clé est là ou pas et faire quelque chose quand elle manque, vous avez besoin de quelque chose comme ça:
bool hasValue = Data_Array.TryGetValue("XML_File", out value);
if (hasValue) {
xmlfile = value;
} else {
// do something when the value is not there
}
Dictionary<String,String> d = new Dictionary<String,String>();
d.Add("1","Mahadev");
d.Add("2","Mahesh");
Console.WriteLine(d["1"]);// it will print Value of key '1'
static void XML_Array(Dictionary<string, string> Data_Array)
{
String value;
if(Data_Array.TryGetValue("XML_File", out value))
{
... Do something here with value ...
}
}
private void button2_Click(object sender, EventArgs e)
{
Dictionary<string, string> Data_Array = new Dictionary<string, string>();
Data_Array.Add("XML_File", "Settings.xml");
XML_Array(Data_Array);
}
static void XML_Array(Dictionary<string, string> Data_Array)
{
String xmlfile = Data_Array["XML_File"];
}
static String findFirstKeyByValue(Dictionary<string, string> Data_Array, String value)
{
if (Data_Array.ContainsValue(value))
{
foreach (String key in Data_Array.Keys)
{
if (Data_Array[key].Equals(value))
return key;
}
}
return null;
}
J'utilise une méthode similaire à celle de dasblinkenlight dans une fonction pour renvoyer une clé unique à partir d'un cookie contenant un tableau JSON chargé dans un dictionnaire, comme suit:
/// <summary>
/// Gets a single key Value from a Json filled cookie with 'cookiename','key'
/// </summary>
public static string GetSpecialCookieKeyVal(string _CookieName, string _key)
{
//CALL COOKIE VALUES INTO DICTIONARY
Dictionary<string, string> dictCookie =
JsonConvert.DeserializeObject<Dictionary<string, string>>
(MyCookinator.Get(_CookieName));
string value;
if (dictCookie.TryGetValue( _key, out value))
{
return value;
}
else
{
return "0";
}
}
Où "MyCookinator.Get ()" est une autre fonction de cookie simple qui obtient une valeur globale de cookie http.
Voici un exemple que j’utilise dans mon code source . Je récupère clé et valeur du dictionnaire de l’élément 0 au nombre d’éléments de mon dictionnaire. Ensuite, je remplis mon tableau string [] que j’envoie en paramètre après dans ma fonction qui accepte uniquement les paramètres string []
Dictionary<string, decimal> listKomPop = addElements();
int xpopCount = listKomPop.Count;
if (xpopCount > 0)
{
string[] xpostoci = new string[xpopCount];
for (int i = 0; i < xpopCount; i++)
{
/* here you have key and value element */
string key = listKomPop.Keys.ElementAt(i);
decimal value = listKomPop[key];
xpostoci[i] = value.ToString();
}
...
J'espère que cela vous aidera et aidera les autres. Cette solution fonctionne également avec SortedDictionary.
Sincères amitiés,
Ozren Sirola
if (Data_Array["XML_File"] != "") String xmlfile = Data_Array["XML_File"];