在 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);  

我想在其中涉及

在 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)