如何向对象列表中添加对象?C# List构造函数参数报错求助
解决List构造函数参数不匹配的问题
你碰到的问题核心很清晰:List<ObiektDecyzja>根本没有接受两个独立参数(obiekt和decyzja)的构造函数。你现在的写法是想直接把两个值传给List的构造函数来创建列表,但List的构造函数只支持这几种用法:
- 空构造函数(创建空列表)
- 传入一个整数(设置列表的初始容量,不是添加元素)
- 传入一个已有的集合(把集合里的元素复制到新列表)
要解决这个问题,分两步来:
1. 确保ObiektDecyzja类有正确的构造函数
首先你需要确认ObiektDecyzja类定义了接受obiekt和decyzja这两个参数的构造函数,不然你没法创建它的实例。比如:
public class ObiektDecyzja { public int Obiekt { get; set; } public int Decyzja { get; set; } // 定义接受两个参数的构造函数 public ObiektDecyzja(int obiekt, int decyzja) { Obiekt = obiekt; Decyzja = decyzja; } }
2. 正确初始化List并添加对象
回到你的LiczbaDeskryptorowIlosc类,有两种常用的正确写法:
方法一:先创建空列表,再添加对象
class LiczbaDeskryptorowIlosc { public List<ObiektDecyzja> ObiektIDecyzja { get; set; } public LiczbaDeskryptorowIlosc(int deskryptor, int atrybut, int ilosc,int obiekt, int decyzja) { this.Deskryptor = deskryptor; this.Atrybut = atrybut; this.Ilosc = ilosc; // 先实例化空列表 this.ObiektIDecyzja = new List<ObiektDecyzja>(); // 创建ObiektDecyzja实例并添加到列表中 this.ObiektIDecyzja.Add(new ObiektDecyzja(obiekt, decyzja)); } public int Deskryptor { get; set; } public int Atrybut { get; set; } public int Ilosc { get; set; } // 其他属性... }
方法二:使用集合初始化器一次性创建并添加对象
这种写法更简洁,适合在创建List的同时直接添加元素:
class LiczbaDeskryptorowIlosc { public List<ObiektDecyzja> ObiektIDecyzja { get; set; } public LiczbaDeskryptorowIlosc(int deskryptor, int atrybut, int ilosc,int obiekt, int decyzja) { this.Deskryptor = deskryptor; this.Atrybut = atrybut; this.Ilosc = ilosc; // 用集合初始化器直接包含新的ObiektDecyzja实例 this.ObiektIDecyzja = new List<ObiektDecyzja> { new ObiektDecyzja(obiekt, decyzja) }; } public int Deskryptor { get; set; } public int Atrybut { get; set; } public int Ilosc { get; set; } // 其他属性... }
另外要提醒你:如果直接写new List<ObiektDecyzja>(5),这里的5是设置列表的初始容量(提前分配内存),不是添加5个元素,别搞混了哦。
内容的提问来源于stack exchange,提问作者BartusZak
相关产品推荐
相关产品推荐

