I found an example showing that a dictionary can be initialised as follows:
Dictionary<string, int> d = new Dictionary<string, int>()
{
    {"cat",开发者_StackOverflow中文版 2},
    {"dog", 1},
    {"llama", 0},
    {"iguana", -1}
};
I don't understand how the syntax {"cat", 2} is valid for creating a Key-Value Pair. Collection initialisation syntax seems to be of the form new MyObjType(){}, while anonymous objects are of the form {a="a", b="b"}. What is actually happening here?
Alright lets take a look at the code here:
Dictionary<string, int> d = new Dictionary<string, int>() 
{ 
    {"cat", 2}, 
    {"dog", 1}, 
    {"llama", 0}, 
    {"iguana", -1} 
};
a dictionary holds two things, a key, and a value.
your declaration, Dictionary<string, int>, means the keys are strings, and the values are integers.
now, when your adding an item, for instance {"cat", 2},, the key is cat. this would be equivilent to you doing something like, d.Add("cat", 2);. a dictionary can hold anything, from <string, string> to <customClass, anotherCustomClass>. and to call it up you can use int CAT = d["cat"]; to which the value of int CAT would be 2. an example of this would be:
Dictionary<string, int> dict = new Dictionary<string, int>() 
{ 
    {"cat", 1}
};
dict.Add("dog", 2);
Console.WriteLine("Cat="+dict["cat"].ToString()+", Dog="+dict["dog"].ToString());
in in there, your adding cat and dog with different values and calling them up
Dictionary is an ICollection of KeyValuePairs. {"cat", 2} is a KeyValuePair.
I'm not really sure what your question is asking, but the answer is that this is the syntax for collection initialization that provides a shortcut to the Add method.
This works too, for example:
new List<DateTime>()
{
    {DateTime.Now},
    {new DateTime()},
    {DateTime.Now}
}
Usually when the question is "why is this valid", the answer is because "it is valid" :)
Note that the syntax you specified in the latter part of the question is not just for anonymous objects, its for any object with public property setters:
new MyPerson("Bob")
{
    Address = "185 What St",
    DoB = DateTime.Now
}
This is a key value pairing. The Dictionary<string,int> says the key will be a string and the value will be an int. Thus with {"cat", 2} you have a key of "cat" and a value of 2. Why you would have a key of cat and a value of 2, I am not sure, but never the less it is an example of a Dictionary<> with a string key and an int value. More info and examples can be found here:
MSDN Dictionary<> with Examples
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论