我正在尝试在C#中创建一个手动setter / getter方法,但是我从“set”-line得到以下错误:错误:'System.Collections.Generic.ListPackage.Add的最佳重载方法匹配(包)'有一些无效的参数
private List<Package> packages = new List<Package>();
public List<Package> Packages
{
set { packages.Add(value); }
get { return packages; }
}
您的代码应如下所示。
private var packages = new List<Package>();
public List<Package> Packages
{
set { packages = value; }
get { return packages; }
}
如果您尝试使用索引getter / setter进行某种直通:
public int this[int key]
{
get
{
return Packages[key];
}
set
{
Packages[key] = value;
}
}
使用getter / setter,输入和输出类型必须相同。 (因此声明是public List<Package> Packages { ...
- 它期待输入List<Packages>
和输出List<Packages>
。
你在这里做的是尝试qazxsw poi类型qazxsw poi和qazxsw poi类型qazxsw poi。这是不允许的。
我认为您想要做的是以下内容:
get
然后调用List<Package>
来获取所有包和set
。
你不能这样做。
如果你想设置一个元素你应该......
Package
用法:MyClass m = new MyClass(); m.addPackage(new Package());
如果您正在尝试设置该集合,那么......
private List<Package> packages = new List<Package>();
public List<Package> Packages
{
// no setter
get { return packages; }
}
用法:
myObject.Packages
我觉得你自己有点混淆了。
包的类型是myObject.Packages.Add(package)
。当你打电话给public void addPackage(Package pack){
packages.Add(pack);
}
时,public List<Package> Packages
{
set { packages=value; }
get { return packages; }
}
实际上是MyClass m= new MyClass();
m.Packages=new List<Package>();
。
List<Package>
这纠正了财产。
要添加项目:
packages.Add(value);
如果你真的想把packages
List<Package>
添加到public List <Package> Packages
{
get { return packages; }
set { packages = value; }
}
你应该使用
Packages.Add(myPackage);
除此以外,
value
您正在尝试使用List<Package>
方法作为packages
方法,但事实并非如此。 set { packages.AddRange(value); }
用于更改整个集合,而set { packages = value; }
方法将添加项目到集合。其他答案中陈述的内容是正确的...如果你真的想要set{}
操作符添加到集合而不是分配新的集合,你可以使用Add
但为了清楚起见,你应该覆盖set
操作符,如果这是案子。