2017-03-04 4 views
-1

Ok, also in einer Konsolenanwendung auf ich arbeite, habe ich eine Liste (myList) in Class01Wie eine Liste von einer Klasse in einer anderen lesen

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] + ","); 
     } 
    } 
} 

und ich brauche diese Liste zu lesen in

0001Test01,

: 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(); 

    } 
} 

die Ausgabe dieses Programms sollte dies auf die Konsole schreiben 0002Test02,

0003Test03,

0004Test04,

Jetzt habe ich gesehen GetList dieses

tun verwendet
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... 
    } 
} 

Aber ich für das Leben von mir kann das nicht zur Arbeit bringen. Ich weiß nicht, ob mir ein Namensraum fehlt oder was. Ich weiß nicht einmal, ob GetList in der Konsolenanwendung funktioniert.

So würde ich wirklich die Hilfe zu schätzen wissen.

Danke-

+0

Was kann 'das nicht zum Laufen bringen'? Außerdem schreiben Sie keine Werte in "myList", die Sie von "GetList" von "MyClass" zurückgeben. – TheVillageIdiot

+0

Die ersten 2 Code-Blöcke sind meine Arbeit. Die anderen 2 sind von [hier] (http://stackoverflow.com/questions/3717028/access-list-from-another-class) – BlackOre

Antwort

0

Obwohl nicht ganz klar von Ihrer Frage, was nicht funktioniert. Aber ich vermute, dass Sie Werte in die Liste setzen müssen. Wenn Sie es bedeuten, ist dies nicht alles in der Konsole angezeigt wird versuchen:

var class02 = new Class01(); 
string wits2; 

class02._addsList(); 

EDIT: nach dem Kommentar zu lesen, ich denke, das wird es Abhilfe:

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 
} 

HINWEIS: Wenn Sie Sie bedeuten werden beim Aufruf von _addsList auf Klassenobjekt ausgegeben, stellen Sie sicher, dass Sie diese Funktion einmal aufgerufen haben, bevor Sie ein Objekt Class01 verwenden. Aus dem zweiten Codeblock für Class02 rufen Sie nicht _addsList Funktion auf Objekt Class01.

+0

(Hinweis zu Selbst: Besser bei der Formulierung dieser) Mein Problem ist Class02 kann nicht lese die Liste von Class01 Class01 Schreibt die vollständige Liste Class02 soll die Liste in Class01 lesen und nur die ersten 4 Ziffern in einer eigenen Liste speichern. Also "0001Test1" ist speichern als "0001" in der neuen Liste – BlackOre

+0

Erhalten Sie irgendeine Ausnahme usw.? Sind beide Klassen im selben Projekt definiert? Versuchen Sie, 'class01' als' internal' zu deklarieren. – TheVillageIdiot

0

Auf Ihrem Class02:

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

dann die Variable ändern Sie auf der Konsole sind vorbei.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 
     } 
0

Ich denke Wichtigste, was Sie fehlt, ist, dass Ihre Klassen nicht als öffentlich markiert sind

so wenden Sie sich bitte öffentliche hinzufügen, bevor Klassendeklarationen wie unten

public class Class02 
    { 
    ...... 

Eine weitere Sache, Um die gewünschte Ausgabe zu erhalten, weisen Sie in Ihrer Klasse02 der Variablen 'wits' eine Teilzeichenfolge zu, die jedoch nicht gedruckt wird. Sie übergeben den Wert stattdessen von der Liste an Console.Writeline.

this helps

0

Dank TheVillageIdiot. Ich habe das jetzt funktioniert. Also vielen Dank. Mein Code sieht nun wie folgt:

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

    } 
} 

Für toughs, die das Problem nicht verstanden haben, Class02 nicht die Liste in Class01 lesen konnte.

Danke für die Hilfe!

Verwandte Themen