- Home /
How do I create a Key and Values Dictionary array in C#
I have created dictionaries before but in vb.net where i would do this
Private degreeDictionary As Dictionary(Of String, String())
Public Sub kanjsort()
degreeDictionary= New Dictionary(Of String, String())
degreeDictionary.Add("ups", {"updegree", "popup"})
End sub
in C# a generally similar method is used
Dictionary<string, string> degreeDictionary= new Dictionary<string,string>();
Void Start ()
{
degreeDictionary.add("upps","updata","goingup");
}
I have been looking around but I havent seen any references to keys and values array type dictionary .
how can I create an array dictionaty that can hold keys and values in this manner degreeDictionary.Add("ups", {"updegree", "popup"})..... or something like this
Answer by ArkaneX · Oct 14, 2013 at 02:52 PM
Dictionary<string, string[]> dictionary = new Dictionary<string, string[]>();
and then
dictionary.Add("ups", new string[] {"updegree", "popup"});
or
dictionary.Add("ups", new[] {"updegree", "popup"});
where can I find some good documentation on Dictionaries in unity ?.
I have been looking about but things are so jumbled .
I want to find out how to now Select a Random key and display the key and the values
1) Dictionary class is not specific to Unity - it's just Dictionary from .NET Framework.
2) To select random element from Dictionary, you have to get a random key first. You can do this by copying all keys to an array, generating a random number, and then selecting a key by its index. Having a key, you can retrieve a value from dictionary. Example:
string[] keys = new string[dictionary.Count];
dictionary.$$anonymous$$eys.CopyTo(keys, 0);
var index = Random.Range(0, keys.Length);
var key = keys[index];
var value = dictionary[key];
thank you for the link and the code example . there is one little issue with the initial example you gave where if I print ( value);
the result will be System.String[]
That's expected result. When any variable is being printed, ToString()
method is called on this variable to present the result. For types like int
, float
and other similar types, the actual number is returned, formatted according to operating system settings (regional settings in Windows). For string
type, value of this string is returned. For other types, returned value depends on ToString()
overload of specific type, or if overload is not provided, then on base class implementation.
Arrays don't have ToString()
overloaded, so the method from base class (`System.Object`) is called, which returns actual type name, in your case System.String[].
If you want elements of an array printed, for example as list separated by comma, then you can use string.Join method:
print(string.Join(",", value));