编译器错误 CS1922
更新:2007 年 11 月
错误消息
集合初始值设定项要求其类型“type”实现 System.Collections.IEnumerable。
若要对某一类型使用集合初始值设定项,该类型必须实现 IEnumerable。如果在打算使用对象初始值设定项时无意中使用了集合初始值设定项语法,则会发生此错误。
更正此错误
如果该类型不表示集合,请使用对象初始值设定项语法,而不要使用集合初始值设定项语法。
如果该类型确实表示集合,则先对其进行修改以使其实现 IEnumerable,然后再使用集合初始值设定项对该类型的对象进行初始化。
如果该类型表示集合,但您无法访问源代码,则只需通过其类构造函数或其他初始化方法对其元素进行初始化即可。
示例
下面的代码生成 CS1922:
// cs1922.cs
public class Test
{
public static void Main()
{
// Collection initializer.
var tc = new TestClass {1,"hello"} ; // CS1922
// Object initalizer.
var tc2 = new TestClass { memberA = 1, memberB = "hello" }; // OK
}
}
public class TestClass
{
public int memberA { get; set; }
public string memberB { get; set; }
}