Hoe kan ik de woordenboekwaarde per toets op functie krijgen?
Mijn functiecode (en het commando dat ik probeer werkt niet):
static void XML_Array(Dictionary<string, string> Data_Array)
{
String xmlfile = Data_Array.TryGetValue("XML_File", out value);
}
Mijn knopcode:
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);
}
Ik wil op de functie XML_Array
de variabele zijn:
string xmlfile = "Settings.xml":
Antwoord 1, autoriteit 100%
Het is zo simpel als dit:
String xmlfile = Data_Array["XML_File"];
Merk op dat als het woordenboek geen sleutel heeft die gelijk is aan "XML_File"
, die code een uitzondering genereert. Als u eerst wilt controleren, kunt u TryGetValue als volgt gebruiken:
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
Antwoord 2, autoriteit 31%
Waarom niet gewoon de sleutelnaam in het woordenboek gebruiken, C# heeft dit:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("UserID", "test");
string userIDFromDictionaryByKey = dict["UserID"];
Als je naar de tip-suggestie kijkt:
Antwoord 3, autoriteit 11%
Zo werkt de TryGetValue
niet. Het retourneert true
of false
op basis van of de sleutel is gevonden of niet, en stelt de parameter out
in op de overeenkomstige waarde als de sleutel aanwezig is .
Als je wilt controleren of de sleutel er is of niet en iets wilt doen als deze ontbreekt, heb je zoiets als dit nodig:
bool hasValue = Data_Array.TryGetValue("XML_File", out value);
if (hasValue) {
xmlfile = value;
} else {
// do something when the value is not there
}
Antwoord 4, autoriteit 8%
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'
Antwoord 5, autoriteit 2%
static void XML_Array(Dictionary<string, string> Data_Array)
{
String value;
if(Data_Array.TryGetValue("XML_File", out value))
{
... Do something here with value ...
}
}
Antwoord 6
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;
}
Antwoord 7
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"];
}
Antwoord 8
Hier is een voorbeeld dat ik gebruik in mijn broncode.
Ik krijg sleutelen waardevan Dictionary van element 0 tot aantal elementen in mijn Dictionary. Dan vul ik mijn string [] array die ik als een parameter stuur in mijn functie die alleen params string accepteert []
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();
}
...
Deze oplossing werkt ook met SortedDictionary.
Antwoord 9
Ik gebruik een vergelijkbare methode als die van dasblinkenlight in een functie om een enkele sleutelwaarde van een Cookie met een JSON-array te retourneren die als volgt in een Dictionary is geladen:
/// <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";
}
}
Waarbij “MyCookinator.Get()” een andere eenvoudige cookiefunctie is die een algemene waarde van een http-cookie krijgt.
Antwoord 10
Dictionary<int,string> dict = new Dictionary<int,string>{
{1,"item1"},
{2,"item2"},
{3,"item3"},
}
int key = 2 // for example
string result = dict.TryGetValue(key,out_) ? dict[key] : null;
Antwoord 11
if (Data_Array["XML_File"] != "") String xmlfile = Data_Array["XML_File"];