如何在调用 display() 时摆脱 namespace.Classname?

时间:2021-06-22 06:53:54

标签: c#

当为参数化构造函数初始化的对象调用 practise.AcademicProgram 时,有没有办法在输出中去掉 display()。在我下面的代码中,当执行 s2.Display(); 时会发生这种情况。

以下是我的工作代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace practise
{
    public class AcademicProgram 
    {
        //Memnber variables
        private int programCode;
        private string programName;
        private int programCredits;

        //Properties for reading and writting the values of private fields
        public int ProgramCode { get => programCode; set => programCode = value; }
        public string ProgramName { get => programName; set => programName = value; }
        public int ProgramCredits { get => programCredits; set => programCredits = value; }

        //Default Constructor
        public AcademicProgram()
        {
        }

        //Parameterized Constructor
        public AcademicProgram (int programCode, string programName, int programCredits)
        {
            this.programCode = programCode;
            this.programName = programName;
            this.programCredits = programCredits;
        }

        public void DisplayResults()
        {
            Console.WriteLine("Program Code: {0}\nProgram Name: {1}\nProgram Credits: {2}\n", programCode, programName, programCredits);
            Console.WriteLine();
        }

    }

    public class Instructor
    {
        //Member variables
        public string forename;
        public string surname;
        public int identificationNumber;
        public AcademicProgram  academicProgram;

        //Default Constructor
        public Instructor()
        {
            this.forename = string.Empty;
            this.surname = string.Empty;
            this.identificationNumber = 0;
            this.academicProgram = null;
        }

        //Parameterized Constructor
        public Instructor(string forename, string surname, int identificationNumber, AcademicProgram  academicProgram)
        {
            this.forename = forename;
            this.surname = surname;
            this.identificationNumber = identificationNumber;
            this.academicProgram = academicProgram;
        }

        // Member Function to display values of member variables on Console.
        public void Display()
        {
            Console.WriteLine(this.forename + ", " + this.surname + ", " + this.identificationNumber + ", " + this.academicProgram);
            Console.WriteLine();
        }

        //Driver function
        static void Main(string[] args)
        {
            //Instantiating object to call non-static member method
            Instructor p = new Instructor();
            p.Go();
            Console.ReadKey();
        }

        //Non-static Member function
        public void Go()
        {

            //Instantiating object without passing any values on runtime.
            Instructor s = new Instructor();

            //Instantiating object of AcademicProgram  class without passing any values on runtime.
            AcademicProgram  progName = new AcademicProgram ();

            //Set the values of fields using properties
            progName.ProgramCode = 8230;
            progName.ProgramName = "Systems Development: Cocnepts and Analysis";
            progName.ProgramCredits = 4;


            // Instantiating object while providing values on runtime.
            Instructor s2 = new Instructor("Eddie ", "Jessup", 2394589, progName);

            //Call to display method 
            s.Display();
            s2.Display(); 
            progName.DisplayResults();
        }
    }
}

输出显示为 here

1 个答案:

答案 0 :(得分:0)

除了覆盖 ToString() 之外,我还可以通过在 Instructor 类的 display() 中进行简单的修复来修复它,如下所示:

public void Display()
{
    Console.WriteLine(this.forename + ", " + this.surname + ", " + this.identificationNumber + ", " + this.academicProgram.ProgramCode + ", " + this.academicProgram.ProgramName + ", " + this.academicProgram.ProgramCredits);
    Console.WriteLine();
}
相关问题