那些额外的花括号在C#中做什么?

时间:2011-10-25 19:58:30

标签: c#

我不知道如何搜索这个问题;如果它是多余的,请原谅我。

所以,我有一些像这样的代码:

textBox1.InputScope = new InputScope { Names = { _Scope } };

Names属性属于IList类型

我的代码是在列表中添加项目还是创建新列表?

额外的花括号是做什么的?

4 个答案:

答案 0 :(得分:15)

这是一个collection initializer,但是没有创建新的集合 - 它只是添加到现有集合中。它用作 object-initializer member-initializer initializer-value 部分。它相当于:

InputScope tmp = new InputScope();
tmp.Names.Add(_Scope);
textBox1.InputScope = tmp;

有关详细信息,请参阅C#4规范的7.6.10.3节。

答案 1 :(得分:11)

这是collection initializer。它允许您将项目添加到Names集合。

答案 2 :(得分:7)

new InputScope { // indicates an object-initializer for InputScope using
                 // the default constructor
   Names = { // indicates an in-place usage of a collection-initializer
     _Scope  // adds _Scope to Names
   } // ends the collection-initializer
}; // ends the object-initializer

var tmp = new InputScope();
tmp.Names.Add(_Scope);
textBox1.InputScope = tmp;

答案 3 :(得分:2)

第一个大括号集是对象初始值设定项。第二组是IList of names(集合)。