错误 CS0103:当前上下文中不存在该名称;系统无法识别我的列表



这是我的面向对象编程类中的一个赋值。

我是一个初学者,尤其是使用这种语言,所以这段代码可能会出现很多问题。

目前,我正专注于它在运行时不断给我的错误:错误CS0103:";名称"StudentList"在当前上下文中不存在">

我想通过公开我的名单,这个问题就不会发生了。

对于我试图添加到MainClass列表中的每个对象,它都会给出这个错误。这是我第一次在C#中使用列表。我是不是错过了一些显而易见的东西?我该如何解决这个问题?

using System;
using System.Collections.Generic;
class MainClass {
public static void Main (string[] args) {
Course Astronomy = new Course("115", "Astronomy", "Allen");
StudentList.Add(new Student("Mark", "Johnson", 94.6));
StudentList.Add(new Student("Marcy", "Steinfield", 89.2));
StudentList.Add(new Student("Jennifer", "Fox", 98.7));
StudentList.Add(new Student("Cody", "Fields", 84.3));
StudentList.Add(new Student("Blake", "Patterson", 78.4));
StudentList.Add(new Student("Brittany", "Cox", 91.8));
StudentList.Add(new Student("Paul", "Sims", 90.0));
Astronomy.roll();
}
}
public class Student {

public string fname;
public string lname;
public int avg;
public Student() {
}
public Student(string fname, string lname, double avg) {
fname = fname;
lname = lname;
avg = avg;
}
}
public class Course {
public List<Student> StudentList = new List<Student>();
public string ccode;
public string cname;
public string teacher;

public Course() {
}
public Course(string ccode, string cname, string teacher) {
ccode = ccode;
cname = cname;
teacher = teacher;
}
public object addStudent(object sdnt) {
return sdnt;
}
public void roll() {
Console.WriteLine($"{cname} {ccode} Roster:n");
foreach(var student in StudentList) {
Console.WriteLine($"{student.fname}n");
}
}
}

您试图访问MainClass中的StudentList,但您的列表声明public List<Student> StudentList = new List<Student>();在不同的类中。

试试这个:

class MainClass
{
public static List<Student> StudentList = new List<Student>();
public static void Main(string[] args)
{
Course Astronomy = new Course("115", "Astronomy", "Allen");
StudentList.Add(new Student("Mark", "Johnson", 94.6));
StudentList.Add(new Student("Marcy", "Steinfield", 89.2));
StudentList.Add(new Student("Jennifer", "Fox", 98.7));
StudentList.Add(new Student("Cody", "Fields", 84.3));
StudentList.Add(new Student("Blake", "Patterson", 78.4));
StudentList.Add(new Student("Brittany", "Cox", 91.8));
StudentList.Add(new Student("Paul", "Sims", 90.0));
Astronomy.roll();
}
}

或者这个:

class MainClass
{
public static void Main(string[] args)
{
Course Astronomy = new Course("115", "Astronomy", "Allen");
Astronomy.StudentList.Add(new Student("Mark", "Johnson", 94.6));
Astronomy.StudentList.Add(new Student("Marcy", "Steinfield", 89.2));
Astronomy.StudentList.Add(new Student("Jennifer", "Fox", 98.7));
Astronomy.StudentList.Add(new Student("Cody", "Fields", 84.3));
Astronomy.StudentList.Add(new Student("Blake", "Patterson", 78.4));
Astronomy.StudentList.Add(new Student("Brittany", "Cox", 91.8));
Astronomy.StudentList.Add(new Student("Paul", "Sims", 90.0));
Astronomy.roll();
}
}

您已经有了一个可以扩展和使用的stub addStudent方法:

public Student AddStudent(Student sdnt) {
this.StudentList.Add(sdnt);
return sdnt;
}

我将参数的类型从object更改为Student,并将提供的学生添加到列表中。这是StudentList,它是包含Course类中的一个字段
Plus我将名称改为以大写字母(PascalCasing(开头,这是C#的标准名称。

用法:

Course astronomy = new Course("115", "Astronomy", "Allen");
astronomy.AddStudent(new Student("Mark", "Johnson", 94.6));
astronomy.AddStudent(new Student("Marcy", "Steinfield", 89.2));
// etc

从AddStudent返回添加的学生(如您所做的(不是必需的,但也不是错误。现在,返回的值被忽略。

最新更新