声明一组KeyValuePairs?

时间:2018-01-24 22:08:40

标签: c# syntax

KeyValuePair <string, int>[] pears1 = new KeyValuePair<string, int>[]{};
KeyValuePair <string, int>[] pears2 = new KeyValuePair<string, int>()[5];
KeyValuePair <string, int>[] pears3 = new KeyValuePair<string, int>()[]{};
KeyValuePair <string, int>[] pears4 = new KeyValuePair<string, int>()[5]{};

pears1和pears2有效。 pears3和pears4不是。这是为什么?有什么区别?

1 个答案:

答案 0 :(得分:1)

  1. new KeyValuePair<string, int>[]{};有效,因为您正在实例化KeyValuePair<string, int>[](一个KVP数组)的新实例,其中大括号{}之间的内容为空。结果:一个空的KVP数组。

  2. new KeyValuePair<string, int>()[5]不起作用,因为您正在实例化KeyValuePair<string, int>的新实例,然后您尝试访问索引[5]。当然这不起作用,因为KVP没有实现索引器。

  3. new KeyValuePair<string, int>()[]{}无效,因为您正在实例化KeyValuePair<string, int>的新实例,然后您尝试在没有索引的情况下访问索引器,因此它已经不会工作更不用说{}

  4. new KeyValuePair<string, int>()[5]{}遇到与#2相同的问题。

  5. 那么还有什么用?

    new KeyValuePair<string, int>[n] // where n is >= 0
    {
        new KeyValuePair<string, int>(), // ... repeated n times
    }