很抱歉我不知道如何搜索这个问题,如果这已经是重复的请原谅。
所以,我有一些像这样的代码:
textBox1.InputScope = new InputScope { Names = { _Scope } };
Names属性的类型是IList
我的代码是向列表添加项目还是创建新列表?
那个额外的花括号是干什么用的?
很抱歉我不知道如何搜索这个问题,如果这已经是重复的请原谅。
所以,我有一些像这样的代码:
textBox1.InputScope = new InputScope { Names = { _Scope } };
Names属性的类型是IList
我的代码是向列表添加项目还是创建新列表?
那个额外的花括号是干什么用的?
这是一个集合初始化器,但它并不会创建一个新的集合 - 它只是向现有集合中添加元素。它被用作成员初始化器中的初始化值部分,用于对象初始化器中。这相当于:
InputScope tmp = new InputScope();
tmp.Names.Add(_Scope);
textBox1.InputScope = tmp;
请参见C# 4规范第7.6.10.3节获取更多信息。
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;
第一个花括号集是对象初始化器。第二个集合是名称列表的IList。