0

うまくいけば、私はこれを正しく、十分に明確に説明しています。ユーザーが入力した複数の詳細を保存してリストに保存しようとしています。ただし、現在行っている方法は、データではなくオブジェクトの種類/名前のみを保存することです。以下は私のコードですが、オブジェクトの名前ではなくオブジェクトデータを保存するにはどうすればよいですか?

Student stud = new Student();
stud.Enter_Student();
_studentList.Add(stud);

学生を入力してください

class Student : Person
{
    public string StudentId { get; private set; }
    public string Subject { get; private set; }

    //string[] _studentdb = new string[4];

    public Student()
    {
        StudentId = "abc123";
        Subject = "Building Subject";
    }

    public void Enter_Student()
    {
            this.Person_Prompt_Print(); //Prompts for user
            this.Address_Prompt_Print();
            this.Contact_Prompt_Print();
            Console.SetCursorPosition(4, 18);
            Console.WriteLine("Student ID:");

            this.Enter_Person(); // Inputs from user
            this.Enter_Address();
            this.Enter_Contacts();
            StudentId = Console.ReadLine();
            Console.SetCursorPosition(30, 18);
    }
}

人物クラスの日付サンプル

class Person
{

    Tidyup tidy = new Tidyup();

    public string FirstName { get; private set; }
    public string Surname { get; private set; }
    public string MiddleName { get; private set; }
    public string AddressLine1 { get; private set; }
    public string AddressLine2 { get; private set; }
    public string Town { get; private set; }
    public string Postcode { get; private set; }
    public string Email { get; private set; }
    public string Telephone { get; private set; }



    public Person()
    {
        FirstName = "Name";
        Surname = "Surname";
        MiddleName = "Middle Name";
        AddressLine1 = "Address";
        AddressLine2 = "Address Ln2";
        Town = "Town";
        Postcode = "<xxx>/<xxx>";
        Email = "name@buildright.ac.uk";
        Telephone = "0800 0000000";
    }

    public void Person_Prompt_Print()
    {
        // Program Frame
        tidy.Line_Top();
        tidy.Line_Base();
        tidy.Sides_Left();
        tidy.Sides_Right();

        Console.SetCursorPosition(4, 2); //Prompts for user
        Console.WriteLine("FirstName:");
        Console.SetCursorPosition(4, 4);
        Console.WriteLine("Surname:");
        Console.SetCursorPosition(4, 6);
        Console.WriteLine("Middle Name:");
    }

    public void Address_Prompt_Print()
    {
        Console.SetCursorPosition(4, 8); //Prompts for user
        Console.WriteLine("House Number/Name:");
        Console.SetCursorPosition(4, 10);
        Console.WriteLine("Street:");
        Console.SetCursorPosition(4, 12);
        Console.WriteLine("Town:");
        Console.SetCursorPosition(4, 14);
        Console.WriteLine("Post Code:");
    }

    public void Contact_Prompt_Print()
    {
        Console.SetCursorPosition(4, 16);
        Console.WriteLine("Email:");
        Console.SetCursorPosition(4, 18);
        Console.WriteLine("Telephone:");
    }

    public void Enter_Person()
    {

        Console.SetCursorPosition(30, 2); // Inputs from user
        FirstName = Console.ReadLine();
        Console.SetCursorPosition(30, 4);
        Surname = Console.ReadLine();
        Console.SetCursorPosition(30, 6);
        MiddleName = Console.ReadLine();
    }

    public void Enter_Address()
    {

        Console.SetCursorPosition(30, 8);  // Inputs from user
        AddressLine1 = Console.ReadLine();
        Console.SetCursorPosition(30, 10);
        AddressLine2 = Console.ReadLine();
        Console.SetCursorPosition(30, 12);
        Town = Console.ReadLine();
        Console.SetCursorPosition(30, 14);
        Postcode = Console.ReadLine();
    }

    public void Enter_Contacts()
    {
        Console.SetCursorPosition(30, 16);
        Email = Console.ReadLine();
        Console.SetCursorPosition(30, 18);
        Telephone = Console.ReadLine();
    }

} // End of Class

そして最後に、単純なネストされた foreach ループを介して出力しています

public void Print_all_student()
{
    Console.Clear();

    foreach (Student t in _studentList)
    {
        // print another list items.
        foreach (Student t1 in _studentList)
        {
            Console.WriteLine("/" + t + "/" + t1);
        }
    }
    Console.ReadKey();
}

不足しているものと、データにアクセスして印刷する方法を誰かが理解するのを手伝ってくれれば、感謝します. どうぞよろしくお願いいたします。

4

1 に答える 1

0

ここには多くの問題がありますが、Console.WriteLine呼び出しでは型のみを表示しているStudentため、型のToStringメソッドStudentが呼び出され、デフォルトで型名が表示されます。

Studentタイプの個々のプロパティを表示したい。

foreach (Student student in studentList)
{
    Console.WriteLine(student.FirstName);
    Console.WriteLine(student.Surname);
    // etc
}

Studentは から派生しPersonているため、すべてのパブリック プロパティにStudent参照からアクセスできることStudentを思い出してくださいPerson

また:

  1. 冗長なループがあります-必要なのは、列挙するループが1つだけですstudentList
  2. ここにはさまざまな懸念が入り混じっています。あなたStudentPerson型はUIに関係するべきではありません(つまり、Console呼び出しに関係するもの)
  3. メソッド名には PascalCase (別名 UpperCamelCase) を使用し、アンダースコアは使用しないでください
于 2013-04-14T14:12:39.203 に答える