Доступ к экземпляру класса из другого класса (c#)

Тема в разделе ".NET", создана пользователем -, 26 сен 2009.

  1. Гость

    Здравствуйте! У меня возникла программа с написанием программы на C#.
    "Реализовать набор классов, описывающих студента (с успеваемостью) и группу студентов. Класс Группа должен обладать функциональностью, позволяющей получать статистику по группе (количество задолженностей, средний балл и т.п.)."
    В классе FormStud создан массив экземпляров класса Stud. Как получить доступ к элементам этого массива класса из класса Group. При обращении к currStudent из класса Group возникает ошибка "Элемент currStudent не существует в текущем контексте". Если кто знает, как это исправить, отзовитесь. Заранее спасибо!
    Класс Stud
    Код (Text):
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace MyGroup.Classes
    {
    public class Stud
    {
    private string _Surname;
    private string _Name;
    private double _Mark;
    private int _Dolg;
    private int _Propusk;

    public Stud()
    {

    }

    public string Surname
    {
    get { return _Surname; }
    set { _Surname = value; }
    }

    public string Name
    {
    get { return _Name; }
    set { _Name = value; }
    }

    public double Mark
    {
    get { return _Mark; }
    set { _Mark = value; }
    }

    public int Dolg
    {
    get { return _Dolg; }
    set { _Dolg = value; }
    }

    public int Propusk
    {
    get { return _Propusk; }
    set { _Propusk = value; }
    }

    public string Res
    {
    get
    {
    return _Surname;
    }
    set
    {
    SetResult(value);
    }
    }
    private void SetResult(string StrResult)
    {
    string[] StrElem = StrResult.Split(' ');
    _Surname = StrElem[0];
    _Name = StrElem[1];
    _Mark = Convert.ToDouble(StrElem[2]);
    _Dolg = Convert.ToInt32(StrElem[3]);
    _Propusk = Convert.ToInt32(StrElem[4]);
    }
    }
    }
    Класс FormStud
    Код (Text):
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using MyGroup.Classes;


    namespace MyGroup
    {
    public partial class FormStud : Form
    {
    public FormStud()
    {
    InitializeComponent();           
    }

    private void cmdGroup_Click(object sender, EventArgs e)
    {
    FormGroup f1 = new FormGroup();
    f1.Show();
    this.Hide();
    }

    private void FormStud_Load(object sender, EventArgs e)
    {
    int i;
    Encoding enc = Encoding.GetEncoding(1251);
    string[] _students = System.IO.File.ReadAllLines("Students.txt", enc); //Массив строк из файла
    Stud[] currStudent = new Stud[_students.GetLength(0)]
    int k = 25;
    for (i = 0; i < _students.GetLength(0); i++)
    {
    currStudent[i] = new Stud();
    currStudent[i].Res = _students[i];
    TextBox tSurname = new TextBox();
    tSurname.Left = 20;
    tSurname.Top = k;
    tSurname.Width = 100;
    tSurname.Text = currStudent[i].Surname;
    TextBox tName = new TextBox();
    tName.Left = 130;
    tName.Top = k;
    tName.Width = 100;
    tName.Text = currStudent[i].Name;
    TextBox tMark = new TextBox();
    tMark.Left = 230;
    tMark.Top = k;
    tMark.Width = 40;
    tMark.Text = Convert.ToString(currStudent[i].Mark);
    TextBox tDolg = new TextBox();
    tDolg.Left = 300;
    tDolg.Top = k;
    tDolg.Width = 40;
    tDolg.Text = Convert.ToString(currStudent[i].Dolg);
    TextBox tPropusk = new TextBox();
    tPropusk.Left = 370;
    tPropusk.Top = k;
    tPropusk.Width = 40;
    tPropusk.Text = Convert.ToString(currStudent[i].Propusk);
    k += 22;
    this.Controls.Add(tSurname);
    this.Controls.Add(tName);
    this.Controls.Add(tMark);
    this.Controls.Add(tDolg);
    this.Controls.Add(tPropusk);
    }
    }


    private void FormStud_FormClosed(object sender, FormClosedEventArgs e)
    {
    Application.Exit();
    }
    }
    }
    Класс Group
    Код (Text):
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using MyGroup;

    namespace MyGroup.Classes
    {
    public class Group
    {
    private int _Number = 1;
    private double _Mark = 0;
    private int _Dolg = 0;
    private int _Propusk = 0;
    private int n = 0;


    public Group()
    {

    }

    public double Mark
    {
    get { return _Mark; }
    set { _Mark = value; }
    }

    public int Number
    {
    get { return _Number; }
    }

    public int N
    {
    get { return n; }
    set { n = value; }
    }

    public int Dolg
    {
    get { return _Dolg; }
    set { _Dolg = value; }
    }

    public int Propusk
    {
    get { return _Propusk; }
    set { _Propusk = value; }
    }

    public void SetResult()
    {
    int i;
    for (i = 0; i < currStudent.GetLength(0); i++)
    {
    _Mark += currStudent[i].Mark;
    _Dolg += currStudent[i].Dolg;
    _Propusk += currStudent[i].Propusk;
    }
    _Mark /= currStudent.GetLength(0);
    }
    }
    }
    Класс FormStud
    Код (Text):
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using MyGroup.Classes;


    namespace MyGroup
    {
    public partial class FormStud : Form
    {
    public FormStud()
    {
    InitializeComponent();

    }

    private void cmdGroup_Click(object sender, EventArgs e)
    {
    FormGroup f1 = new FormGroup();
    f1.Show();
    this.Hide();
    }

    private void FormStud_Load(object sender, EventArgs e)
    {
    int i;
    Encoding enc = Encoding.GetEncoding(1251);
    string[] _students = System.IO.File.ReadAllLines("Students.txt", enc); //Массив строк из файла
    Stud[] currStudent = new Stud[_students.GetLength(0)];


    int k = 25;
    for (i = 0; i < _students.GetLength(0); i++)
    {
    currStudent[i] = new Stud();
    currStudent[i].Res = _students[i];

    TextBox tSurname = new TextBox();
    tSurname.Left = 20;
    tSurname.Top = k;
    tSurname.Width = 100;
    tSurname.Text = currStudent[i].Surname;
    TextBox tName = new TextBox();
    tName.Left = 130;
    tName.Top = k;
    tName.Width = 100;
    tName.Text = currStudent[i].Name;
    TextBox tMark = new TextBox();
    tMark.Left = 230;
    tMark.Top = k;
    tMark.Width = 40;
    tMark.Text = Convert.ToString(currStudent[i].Mark);
    TextBox tDolg = new TextBox();
    tDolg.Left = 300;
    tDolg.Top = k;
    tDolg.Width = 40;
    tDolg.Text = Convert.ToString(currStudent[i].Dolg);
    TextBox tPropusk = new TextBox();
    tPropusk.Left = 370;
    tPropusk.Top = k;
    tPropusk.Width = 40;
    tPropusk.Text = Convert.ToString(currStudent[i].Propusk);
    k += 22;
    this.Controls.Add(tSurname);
    this.Controls.Add(tName);
    this.Controls.Add(tMark);
    this.Controls.Add(tDolg);
    this.Controls.Add(tPropusk);
    }
    }


    private void FormStud_FormClosed(object sender, FormClosedEventArgs e)
    {
    Application.Exit();
    }
    }
    }
     
  2. Young Programmer

    Young Programmer Гость

    абсолютно неправильно написанный код
    Код (Text):
    public void SetResult()
    {
    int i;
    for (i = 0; i < currStudent.GetLength(0); i++)
    {
    _Mark += currStudent[i].Mark;
    _Dolg += currStudent[i].Dolg;
    _Propusk += currStudent[i].Propusk;
    }
    _Mark /= currStudent.GetLength(0);
    }
    читать учебники еще долго придеться... переменная currStudent не объявлена внутри класса Group, поэтому ошибку и пишет. Вообще по хорошему в классе Group нужно делать массив объектов Student, которые будут заполняться каким-нить методом типа
    Код (Text):
    Group gr=new Group("gr_name");
    gr.AddStudent(new Student(...));
    иначе будете мудрить потом с привязкой студентов к группе, а так все студенты будут уже принадлежать конкретной группе. В общем читайте учебники :)
     
Загрузка...

Поделиться этой страницей