OriginalGriff
Здесь есть целый ряд проблем:
1)
public List<string> students= new List<string>();
public static string Stud()
{
List<string> students = new List<string>();
students.Add("Mary");
}
У вас есть две переменные с одинаковым именем - students - и та, которая объявлена внутри метода Stud, "маскирует" класс первого уровня. Таким образом, любые операции, которые вы выполняете с учащимися внутри метода, не влияют на первый уровень класса - и поскольку он объявлен внутри тела метода, он является локальной переменной и будет отброшен при выходе метода. Как говорит F-ES Sitecore, вам вообще не нужно будет объявлять студентов внутри метода, вместо этого используйте версию уровня класса. Кроме...
2) шпилька-это
static
метод, что означает, что он не может получить доступ ни к одному экземпляру на основе членов класса - А класс level collection students не является
static
таким образом, это переменная экземпляра, доступ к которой возможен только через методы экземпляра и через экземпляр, а не через имя класса.
3) Вы не можете получить доступ к студентам непосредственно с Вашего компьютера.
Main
метод потому что он находится в другом классе:
static void Main(string[] args)
{
Stud_Information.Stud();
for (var i = 0; i < students.Count; i++)
{
Console.WriteLine("[" + i.ToString() + "] " + students[i] );
}
Console.ReadKey();}
студенты просто не доступны вообще в Main, даже если бы вы добавили к нему!
4) Ваш код не будет компилироваться, потому что вы объявляете Stud как возвращающую строку, но на самом деле не возвращаете никакого значения!
Итак, попробуйте вот это:
public List<string> students= new List<string>();
public void Stud()
{
students.Add("Mary");
}
Программы.в CS
static void Main(string[] args)
{
Stud_Information si = new Stud_Information();
si.Stud();
for (var i = 0; i < si.students.Count; i++)
{
Console.WriteLine("[" + i.ToString() + "] " + si.students[i] );
}
Console.ReadKey();
}