从List <list <string>&gt;派生的类出现问题

时间:2016-02-23 23:41:09

标签: c# methods subclass

我是定义课程的新手。我想定义一个名为“数据平面”的课程。 (因为它是用于存储csv文件的二维数据集,因此可能表示为空间中的平面),它继承了类List<List<string>>的所有方法(如果这是一个类)。

到目前为止,我已成功申报了该课程,并创建了一个方法来返回一个&#39;列&#39;数据,但我无法调用该方法。我之前在让类继承List<List<string>>类的方法方面遇到了麻烦,但经过一些研究后才得到了这些方法。

出于某种原因,当我尝试翻译教程以构建返回List<string>中的数据列的方法时,它不会让我调用该方法。

有人能给我一个明确的例子和Layman的术语解释,说明如何声明一个继承自另一个的类,并为它编写一个使用该类值的方法吗?

或者,有人可以描述我如何使用扩展方法吗?

此外,如果有人有洞察力,这就是我到目前为止所拥有的:

public class dataplanematrix : List<List<string>>
{
    List<List<string>> dataplane;

    private List<string> getColumn (int value)
    {
            List<string> columnValue = new List<string>();
            foreach (List<string> line in dataplane)
            {
                columnValue.Add(line[value].ToString());
            }
            return columnValue;
    }
}

以上代码的问题是我无法调用getColumn方法。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

表面上的问题是,您已将方法private声明为public

但是,您的类定义是错误的。没有必要有一个领域。

这样做:

public class DataPlaneMatrix : List<List<string>>
{
    public List<string> GetColumn(int value)
    {
        List<string> columnValue = new List<string>();
        foreach (List<string> line in this)
        {
            columnValue.Add(line[value]);
        }
        return columnValue;
    }
}

也不需要执行line[value].ToString()因为line[value]会做得很好。

你也可以这样定义你的类:

public class DataPlaneMatrix : List<List<string>>
{
    public List<string> GetColumn(int value)
    {
        return this.Select(line => line[value]).ToList();
    }
}

或者,如果您使用的是C#6.0,请执行以下操作:

public class DataPlaneMatrix : List<List<string>>
{
    public List<string> GetColumn(int value) => this.Select(line => line[value]).ToList();
}

答案 1 :(得分:2)

制作方法public而不是private