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不是。这是为什么?有什么区别?
答案 0 :(得分:1)
new KeyValuePair<string, int>[]{};
有效,因为您正在实例化KeyValuePair<string, int>[]
(一个KVP数组)的新实例,其中大括号{}
之间的内容为空。结果:一个空的KVP数组。
new KeyValuePair<string, int>()[5]
不起作用,因为您正在实例化KeyValuePair<string, int>
的新实例,然后您尝试访问索引[5]。当然这不起作用,因为KVP没有实现索引器。
new KeyValuePair<string, int>()[]{}
无效,因为您正在实例化KeyValuePair<string, int>
的新实例,然后您尝试在没有索引的情况下访问索引器,因此它已经不会工作更不用说{}
。
new KeyValuePair<string, int>()[5]{}
遇到与#2相同的问题。
那么还有什么用?
new KeyValuePair<string, int>[n] // where n is >= 0
{
new KeyValuePair<string, int>(), // ... repeated n times
}