2015-04-26 2 views
0

Я хочу, чтобы создать ArrayList в Student class, но не можете добавить к нему - student1, student2, student3 значения от Main. Как я могу сделать read1/2/3 видимым, не заменяя их другим классом? Это часть моего кода:Как вызвать (сделать видимую) переменную из другого класса?

public class Program 
    { 

    static void Main(string[] args) 
    { 

     Student student1 = new Student("John", "Grodinskiy", "12/07/1996", "Lesy Ukrainky 88", "Cherkasy", "58000", "Ukraine"); 
     Student student2 = new Student("Niko", "Rekun", "03/02/1995", "Promyslova 86", "Velykiy Bychkiv", "90615","Ukraine"); 
     Student student3 = new Student("Veronica","Kran", "26/03/1991", "Uzhgorodska 1", "Svalyava", "59432", "Ukraine"); 
     ........ 
Console.WriteLine("The {0} program contains the {1} of Sciense degree\nThe {2} of Sciense degree contains the course {3}\n{4} course contains {5} students", program.Program_name1, myDegree.degree_name, myDegree.degree_name, myCourse.Course_name, myCourse.Course_name, Student.Counter); 
     student1.TakeTest(); 
     student2.TakeTest(); 
     student3.TakeTest(); 
    } 

} 

// Класс

public class Student:Person 
    { 
     public Student(string name, string last_name, string birthday, string address, string city, string zip, string country) 
     { 
      this.Name = name; 
      this.Last_name = last_name; 
      this.Birth_date = birthday; 
      this.Address = address; 
      this.City = city; 
      this.Zip = zip; 
      this.Country = country; 
      Counter++ 
     } 

     public void TakeTest() 
     { 
      Take_counter++; 
      Console.WriteLine("{0} student took the test.",Take_counter); 
     } 

     public void add_student() 
     { 
      ArrayList students = new ArrayList(); 
      students.Add(student1); 
     } 
    } 
+0

Не используйте 'ArrayList' (который хранит все как объект) - используйте общую коллекцию, такую ​​как' List 'например. 'Список students = new Список ()' –

ответ

2

ниже часть кода, не принадлежит в Student классе.

public void add_student() 
{ 
    ArrayList students = new ArrayList(); 
    students.Add(student1); 
} 

Потому что студент не является коллекцией студентов и не содержит коллекции студентов.

Одна вещь, которую вы можете сделать, это создать новый класс, представляющий коллекцию студентов, давайте назовем его StudentProgram:

public class StudentProgram 
{ 
    private readonly List<Student> _students = new List<Student>(); 

    public StudentProgram(string programName) 
    { 
     Name = programName; 
    } 

    public readonly string Name; 

    public void AddStudent(Student newStudent) 
    { 
     _students.Add(newStudent); 
    } 

    public IEnumerable<Student> AllStudents 
    { 
     get { return _students; } 
    } 
    public int NumberOfStudents 
    { 
     get { return _students.Count; } 
    } 
} 

Вы можете использовать это в вашем Main так:

static void Main(string[] args) 
{ 
    var scienceProgram = new StudentProgram("science"); 

    scienceProgram.Add(new Student(
     "John", "Grodinskiy", "12/07/1996", 
     "Lesy Ukrainky 88", "Cherkasy", "58000", "Ukraine")); 
    scienceProgram.Add(new Student(
     "Niko", "Rekun", "03/02/1995", 
     "Promyslova 86", "Velykiy Bychkiv", "90615","Ukraine")); 
    scienceProgram.Add(new Student(
     "Veronica","Kran", "26/03/1991", 
     "Uzhgorodska 1", "Svalyava", "59432", "Ukraine")); 

    ........ 

    Console.WriteLine(
     "The {0} program has {1} students", 
     scienceProgram.Name, scienceProgram.NumberOfStudents); 

    foreach (var student in scienceProgram.AllStudents) 
     student.TakeTest(); 
} 
1
public class Student:Person 
    { 
     public static List<Student> Students = new List<Student>(); 

     //.... 

     public static void add_student(Student newStudent) 
     {    
      Students.Add(newStudent); 
     } 
    } 

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

1

Это довольно запутанным дизайн, если вы хотите, чтобы добавить студентов в методе add_student, то вы должны использовать:

public void add_student(Student student) 
{ 
    List<Student> students = new List<Student>(); 
    students.Add(student); 
} 

Затем в основной метод

static void Main(string[] args) 
{ 
    ... 
    student1.Add(student1); 
} 

Добавление студентов в классе (поскольку вы передаете студенту самому себе, к которому вы можете получить доступ с ключевым словом «this»), если вы объясните программу, возможно, я могу помочь вам ее улучшить.

1

Возможно, следующий ответ слишком прост. Может быть, потому, что я неправильно понимаю вашу проблему. Но если ваша проблема лежит здесь:

public void add_student() 
    { 
     ArrayList students = new ArrayList(); 
     students.Add(student1); 
    } 

Так что если вы хотите сохранить новый students в ArrayList students, то вы можете сделать следующее:

ArrayList students = new ArrayList(); 
public void add_student(student1) 
    {   
     students.Add(student1); 
    } 

И вы можете добавить students из основного класса по:

Student person = new Student(...); 
person.add_student("any student to be added"); 
Смежные вопросы