2014-02-27 3 views
-3

Я создал список, который может хранить все входные значения из текстового файла. Теперь мне нужно получить доступ к этому списку из другого класса. Нужен ли код для каких-либо изменений?Как получить доступ к списку из другого класса

public static void boxdetails() 
{ 
    String line; 
    List<Box> listofboxes = new List<Box>(); 
    try 
    { 
     using (StreamReader sr = new StreamReader("c:/boxvalues.txt")) 

     while ((line = sr.ReadLine()) != null) 
     { 
      // create new instance of container for each line in file 
      Box box = new Box(); 
      // List<Box> listofboxes = new List<Box>(); 
      string[] Parts = line.Split(' '); 
      // set non-static properties of container 
      box.bno = Parts[0]; 
      box.length = Convert.ToDouble(Parts[1]); 
      box.height = Convert.ToDouble(Parts[2]); 
      box.depth = Convert.ToDouble(Parts[3]); 
      box.volume = Convert.ToDouble(Parts[4]); 
      box.placed = Convert.ToBoolean(Parts[5]); 
      // add container to list of containers 

     } 
     listofboxes.Add(box); 
     Console.WriteLine((box.bno) + "is ADDED"); 
     listofboxes = listofboxes.OrderBy(x => x.volume).ToList(); 
    } 
    //[code incomplete] 

ответ

1

Шаг 1: Объявите List<Box> вне вашего метода с public модификатора доступа.

class ClassA 
{ 
    public List<Box> myList = new List<Box>(); 
} 

Шаг 2: получить доступ к своему List<Box> с переменным экземпляром этого класса от любых других классов.

class ClassB 
{ 
ClassA aRef=new ClassB(); 
aRef.myList.Add(myBox);//access here 
} 
0

Try делает listofboxes свойство членом, например:

public List<Box> ListOfBoxes 
{ 
    get 
    { 
     return this._listOfBoxes; 
    } 
    set 
    { 
     this._listOfBoxes = value; 
    } 
} 
private List<Box> _listOfBoxes = new List<Box>(); 

Затем измените код так:

while ((line = sr.ReadLine()) != null) 
{ 
    // create new instance of container for each line in file 
    Box box = new Box(); 

    // List<Box> listofboxes = new List<Box>(); 
    string[] Parts = line.Split(' '); 

    // set non-static properties of container 
    box.bno = Parts[0]; 
    box.length = Convert.ToDouble(Parts[1]); 
    box.height = Convert.ToDouble(Parts[2]); 
    box.depth = Convert.ToDouble(Parts[3]); 
    box.volume = Convert.ToDouble(Parts[4]); 
    box.placed = Convert.ToBoolean(Parts[5]); 

    // add container to list of containers 
    this.ListOfBoxes.Add(box); 
} 
0

Список Declare как статические, так что вы можете получить доступ из любого класс с использованием названия класса

подобный,

ClassName.listofboxes //assign to some other list or use as per ur need 

.....

public static List<Box> listofboxes; 
public static void boxdetails() 
{ 
    listofboxes = new List<Box>(); 
    ... 
} 
Смежные вопросы