C#中Dictionary的初始化 两种方式不同

以下两种初始化Dictionary的方法有什么不同?

var obj = new Dictionary<string, string>() {

{ "FirstName" , "Eric"}

};

        var obj1 = new Dictionary<string, string>
        {
            ["FirstName"] = "Eric" 
        };

第一个等价于

new Dictionary<string, string>().Add("FirstName", "Eric");

第二个等价于

new Dictionary<string, string>()["FirstName"] = "Eric";

这两个行为是不一样的。

例如,下面这段代码,前面出错,后面不出错的。

    var obj = new Dictionary<string, string>()
    {
        {"FirstName", "Eric"},
        { "FirstName" , "Eric2"}
    };

    var obj1 = new Dictionary<string, string>
    {
        ["FirstName"] = "Eric",
        ["FirstName"] = "Eric2"
    };