我有一个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接受可变数量的参数。

现在我在另一个类中有另一个方法,该方法返回新的EvoObject为:

return new EvoObject(_author, _coAuthors, _papers, _venues);


我想联系的


_authorObject _id
_coAuthors_papers_venuesparams List<Int32> _args


在类EvoObject.cs的构造函数中,而_coAuthors_papers_venues:都是类型为List<Int32>的列表

我在行上出错:

return new EvoObject(_author, _coAuthors, _papers, _venues);


EvoObject does not contains a constructor that takes 4 arguments

params在这里如何有用?

最佳答案

我相信您在方法签名中的列表声明中缺少[],以便将其声明为参数数组。

尝试public EvoObject(Object _id, params List<Int32>[] _args)

关于c# - 在类构造函数C#中传递可变数量的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37415199/

10-12 17:41