如何从另一个类中读取一个列表

时间:2017-03-04 04:38:11

标签: c# console-application

好的,所以在我正在使用的控制台应用程序中,我在Class01中有一个列表(myList)

class Class01
{
    public List<string> myList = new List<string>();

    public void _addsList()
    {
        myList.Add("0001Test01");
        myList.Add("0002Test02");
        myList.Add("0003Test03");
        myList.Add("0004Test04");

        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine(myList[i] + ",");
        }
    }
}

我需要在Class02中读取该列表

class Class02
{
    public void _callList()
    {
        var class02 = new Class01();
        string wits2;

        List<string> buffer = new List<string>();
        for (int i = 0; i < class02.myList.Count; i++)
        {
            wits2 = class02.myList[i].Substring(0, 4);
            Console.WriteLine(class02.myList[i]);
        }

        Console.ReadKey();

    }
}

此程序的输出应将此内容写入控制台:

0001Test01,

0002Test02,

0003Test03,

0004Test04,

0001

0002

0003

0004

现在我看到GetList用来做这个

public class MyClass {

    private List<string> myList = new List<string>();

    public List<string> GetList()
    {
        return myList;
    }
 } 


public class CallingClass {

    MyClass myClass = new MyClass();

    public void GetList()
    {
        List<string> calledList = myClass.GetList();
        ///More code here...
    }
}

但我为我的生活无法让这个工作。我不知道我是否缺少命名空间或什么。我甚至不知道GetList是否在控制台应用程序中工作。

所以我非常感谢你的帮助。

谢谢 -

4 个答案:

答案 0 :(得分:0)

虽然你的问题并不完全清楚什么是无效的。但我怀疑你需要把值放在列表中。如果你的意思是它没有在控制台中显示任何内容,请试试这个:

 var class02 = new Class01();
 string wits2;

 class02._addsList();

编辑:阅读完评论后,我认为这样可以解决问题:

for (int i = 0; i < class02.myList.Count; i++)
{
    wits2 = class02.myList[i].Substring(0, 4);
    Console.WriteLine(class02.myList[i]);
    buffer.Add(wits2);//Add it to list declared in this function
}

注意:如果您的意思是在类对象上调用_addsList时获得输出,请确保在使用Class01对象之前调用了此函数一次。在Class02的第二个代码块中,您没有在_addsList的对象上调用Class01函数。

答案 1 :(得分:0)

在你的Class02上:

        var class02 = new Class01();
        class02._addsList(); //Add this on your declaration
        string wits2;

然后更改您在Console.WriteLine上传递的变量:

List<string> buffer = new List<string>();
        for (int i = 0; i < class02.myList.Count; i++)
        {
            wits2 = class02.myList[i].Substring(0, 4);
            //Console.WriteLine(class02.myList[i]); //Remove this
            Console.WriteLine(wits2);  //Use wits2 instead since this is what you get on your Substring
        }

答案 2 :(得分:0)

我认为您遗失的最重要的事情是您的课程未标记为公开

所以请在课前声明之前加上公开

    public class Class02
    {
    ......

还有一件事,为了获得所需的输出,在class02中,您要将子字符串分配给&#39;智慧&#39;变量但不打印它。您将值从列表传递到Console.Writeline。

希望这有帮助

答案 3 :(得分:0)

感谢TheVillageIdiot。我现在开始工作了。所以谢谢。我的代码现在看起来像这样:

public class Class01
{
    public List<string> myList = new List<string>();

    public void _addsList()
    {
        myList.Add("0001Test01");
        myList.Add("0002Test02");
        myList.Add("0003Test03");
        myList.Add("0004Test04");            
    }
}

class Class02
{
    public void _callList()
    {
        var class01 = new Class01();
        class01._addsList(); //<--- Had to add this line

        for (int i = 0; i < class01.myList.Count; i++)
        {
            Console.WriteLine(class01.myList[i] + ",");
        }

        string wits2;

        List<string> buffer = new List<string>();
        for (int i = 0; i < class01.myList.Count; i++)
        {
            wits2 = class01.myList[i].Substring(0, 4);
            Console.WriteLine(wits2);
        }

        Console.ReadKey();

    }
}

对于不理解问题的强悍者,Class02无法读取Class01中的List。

感谢您的帮助!