在创建列表时,字段初始值设定项无法引用非静态字段,方法或属性

创建零件清单时出错。 parts.add发生错误。 它说“字段初始值设定项不能引用非静态字段,方法或属性”

List parts = new List(){

// Add parts to the list. parts.Add(new Part() { PartName = "crank arm", PartId = 1234}); parts.Add(new Part() { PartName = "chain ring", PartId = 1334 }); parts.Add(new Part() { PartName = "regular seat", PartId = 1434 }); parts.Add(new Part() { PartName = "banana seat", PartId = 1444 }); parts.Add(new Part() { PartName = "cassette", PartId = 1534 }); parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); } public class Part { public string PartName { get; set; } public string PartId { get; set; } } 

您不能将Add()作为初始化程序的一部分调用。 将您的代码更改为:

 void SomeMethod() { List parts = new List(); // Add parts to the list. parts.Add(new Part() { PartName = "crank arm", PartId = 1234}); parts.Add(new Part() { PartName = "chain ring", PartId = 1334 }); parts.Add(new Part() { PartName = "regular seat", PartId = 1434 }); parts.Add(new Part() { PartName = "banana seat", PartId = 1444 }); parts.Add(new Part() { PartName = "cassette", PartId = 1534 }); parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); } public class Part { public string PartName { get; set; } public string PartId { get; set; } } 

使用集合初始值设定项时,您不需要调用Add方法来添加项目( 请参阅此处 ),只需使用逗号列出它们,就像对数组一样,然后就完成了。

 List parts = new List() { // Add parts to the list. new Part() { PartName = "crank arm", PartId = 1234}, new Part() { PartName = "chain ring", PartId = 1334 }, new Part() { PartName = "regular seat", PartId = 1434 }, new Part() { PartName = "banana seat", PartId = 1444 }, new Part() { PartName = "cassette", PartId = 1534 }, new Part() { PartName = "shift lever", PartId = 1634 } }