C# - 缺少汇编/引用,面向对象编程

本文关键字:引用 面向对象编程 汇编 | 更新日期: 2023-09-27 18:30:17

我似乎找不到错误来修复我的代码。我得到了一个测试器类,并被告知要制作正确运行测试器所需的类。这是我遇到问题的代码:

测试员类

using System;
using School;
namespace School
{
    class Tester
    {
        static void Main(string[] args)
        {
            Faculty scienceFac = University.createFaculty("Science");
        }
    }
}

教师班

using System;
namespace School
{
public class Faculty
{
    public String faculty;
    public Faculty(String faculty)
    {
        this.faculty = faculty;
    }
}
}

大学班

using System;
namespace School
{
public class University
{
    private int numOfFaculties;
    public University()
    {
        numOfFaculties = 0;
    }
    public void createFaculty(String faculty)
    {
        numOfFaculties++;
        new Faculty(faculty);//?????
    }
    public int numberOfFaculties()
    {
        return numOfFaculties;  
    }
}
}

只有测试人员显示错误,是我引用命名空间错误吗?

C# - 缺少汇编/引用,面向对象编程

除了其他人在评论中提到的问题:

    大学班级"记住"院
  • 系的数量,但不"记住"院系本身

  • 您无需将整数字段初始化为 0

  • 不需要
  • 有一个int numOfFaculties字段和一个int numberOfFaculties()方法 - 这就是属性的用途:public int NumberOfFaculties { get; private set; }会做得很好。


我建议你的University课需要像这样:

public class University
{
    private readonly List<Faculty> _faculties = new List<Faculty>();
    public List<Faculty> Faculties { get { return _faculties; } }
    public Faculty CreateFaculty(string facultyName)
    {
        var faculty = new Faculty(facultyName);
        _faculties.Add(faculty);
        return faculty;
    }
    public int NumberOfFaculties { get { return _faculties.Count; } }
}

其中,CreateFaculty()创建一个教职员工并将其存储在University对象内的列表中,其中NumberOfFaculties计数只是 .列表的计数。

因此,要创建一所拥有科学学院的大学,您可以这样称呼它:

University uni = new University();
Faculty scienceFac = uni.CreateFaculty("Science");

您需要更改 createFaculty 以返回 Faculty 的实例。

public Faculty createFaculty(String faculty)
{
    numOfFaculties++;
    return new Faculty(faculty);
}

您还需要在测试项目中创建一个 University 实例;createFaculty 不是静态的。

static void Main(string[] args)
{
    var instance = new University();
    var scienceFac = instance.createFaculty("Science");
}