在 class 构造函数 C# 中传递可变数量的参数
Passing variable number of parameters in class constructor C#
我有一个 class EvoObject.cs
,它的构造函数定义为:
public class EvoObject
{
private Object _id;
private List<List<Int32>> _attributes;
public EvoObject(Object _id, params List<Int32> _args)
{
List<Int32> _attrib = new List<int>();
Debug.Assert(_args.Count >= 2, "Invalid attributes!");
this._id = _id;
_attributes = new List<List<Int32>>(_args.Count);
for (int _i = 0; _i < _args.Count; _i++)
{
_attrib.Add(_args[_i]);
}
_attributes.Add(_attrib);
}
}
其中我使用 params
来接受可变数量的参数。
现在我在另一个 class 中有另一个方法 returns new EvoObject
as:
return new EvoObject(_author, _coAuthors, _papers, _venues);
我想在其中涉及
_author
与 Object _id
_coAuthors
、_papers
、_venues
和 params List<Int32> _args
在 class EvoObject.cs
的构造函数中,而 _coAuthors
、_papers
和 _venues
:都是 List<Int32>
[=30 类型的列表=]
我在以下行遇到错误:
return new EvoObject(_author, _coAuthors, _papers, _venues);
即EvoObject does not contains a constructor that takes 4 arguments
。
params
在这里有什么用?
我认为您在方法签名中的 List 声明中遗漏了 [] 以便将其声明为参数数组。
尝试public EvoObject(Object _id, params List<Int32>[] _args)
我有一个 class EvoObject.cs
,它的构造函数定义为:
public class EvoObject
{
private Object _id;
private List<List<Int32>> _attributes;
public EvoObject(Object _id, params List<Int32> _args)
{
List<Int32> _attrib = new List<int>();
Debug.Assert(_args.Count >= 2, "Invalid attributes!");
this._id = _id;
_attributes = new List<List<Int32>>(_args.Count);
for (int _i = 0; _i < _args.Count; _i++)
{
_attrib.Add(_args[_i]);
}
_attributes.Add(_attrib);
}
}
其中我使用 params
来接受可变数量的参数。
现在我在另一个 class 中有另一个方法 returns new EvoObject
as:
return new EvoObject(_author, _coAuthors, _papers, _venues);
我想在其中涉及
_author
与Object _id
_coAuthors
、_papers
、_venues
和params List<Int32> _args
在 class EvoObject.cs
的构造函数中,而 _coAuthors
、_papers
和 _venues
:都是 List<Int32>
[=30 类型的列表=]
我在以下行遇到错误:
return new EvoObject(_author, _coAuthors, _papers, _venues);
即EvoObject does not contains a constructor that takes 4 arguments
。
params
在这里有什么用?
我认为您在方法签名中的 List 声明中遗漏了 [] 以便将其声明为参数数组。
尝试public EvoObject(Object _id, params List<Int32>[] _args)