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

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Здравствуйте! У меня возникла программа с написанием программы на C#.
"Реализовать набор классов, описывающих студента (с успеваемостью) и группу студентов. Класс Группа должен обладать функциональностью, позволяющей получать статистику по группе (количество задолженностей, средний балл и т.п.)."
В классе FormStud создан массив экземпляров класса Stud. Как получить доступ к элементам этого массива класса из класса Group. При обращении к currStudent из класса Group возникает ошибка "Элемент currStudent не существует в текущем контексте". Если кто знает, как это исправить, отзовитесь. Заранее спасибо!
Класс Stud
Код:
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
Код:
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
Код:
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
Код:
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();
}
}
}
 
Y

Young Programmer

#2
абсолютно неправильно написанный код
Код:
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, которые будут заполняться каким-нить методом типа
Код:
Group gr=new Group("gr_name");
gr.AddStudent(new Student(...));
иначе будете мудрить потом с привязкой студентов к группе, а так все студенты будут уже принадлежать конкретной группе. В общем читайте учебники :)