首页 > 解决方案 > 提示用户通过多个类输入数据信息

问题描述

我正在尝试使用 OOP 创建数据库程序。我已经尝试解决了几个月,但似乎无法找到我正在寻找的答案。经历了示例,甚至是 Udemy 课程,但又回到了我所知道的极限。

我的目标是允许用户输入数据并将其安全地存储在另一个类下。当程序结束时,它将输出另一个班级的用户信息,而不是一个班级的所有用户信息。

我已经复习了 C# Master 等 Udemy 课程,并查看了来自 Microsoft 的 C# 教程。

代码表 1

using System;

namespace DataBase
{
    public class Data
    {
        static string userFirst, userLast, userGender;
        static int userAge;
        static void Main(string[] args)
        {
            Data_Storage user = new Data_Storage(userFirst, userLast, userGender, userAge);

            Console.WriteLine("Please input First Name: ");
            userFirst = Console.ReadLine();

            Console.WriteLine("Please input Last Name: ");
            userLast = Console.ReadLine();

            Console.WriteLine("Please input Gender: ");
            userGender = Console.ReadLine();

            Console.WriteLine("Please input Age: ");
            userAge = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine(user.ToString());
        }

代码表 2

using System;
using System.Collections.Generic;
using System.Text;

namespace DataBase
{
    class Data_Storage
    {
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string gender { get; set; }
        public int age { get; set; }

        //Implicitly
        public Data_Storage()
        {
            firstName = "First";
            lastName = "Last";
            gender = "Null";
            age = 0;
        }

        //Instance constructor
        public Data_Storage(string userFirst, string userLast, string userGender, int userAge)
        {
            this.firstName = userFirst;
            this.lastName = userLast;
            this.gender = userGender;
            this.age = userAge;
        }

        public override string ToString()
        {
            return String.Format(this.firstName + "\n" + this.lastName + "\n" + this.gender + "\n" + this.age);
        }

    }
}

在测试这段代码时,它只会返回我创建的默认构造函数,而不是引用我的实例构造函数。

标签: c#classoopinheritanceprompt

解决方案


代替:

userFirst = Console.ReadLine();

做这个:

user.firstName = Console.ReadLine();

并对所有其他属性重复此操作。这将解决您的问题。您还可以删除整个构造函数,而不是这样:

Data_Storage user = new Data_Storage(userFirst, userLast, userGender, userAge);

做这个:

var user = new Data_Storage();

你也可以删除这个:

static string userFirst, userLast, userGender;
static int userAge;

推荐阅读