以不同的方法从结构中获取信息';s使用C#设置

本文关键字:使用 设置 信息 获取 方法 结构 | 更新日期: 2023-09-27 18:27:16

所以基本上我的问题是我的程序中有一个方法,它为学生设置结构中的数据,看起来像:

public static void addingstudent(){
        student student;
        AddStudent details = new AddStudent();
        student.name = details.setName();
        student.course = details.setCourse();
        student.studentno = details.setStudentNumber();
        student.year = details.setYear();
        menu();         
    }

AddStudent类包含一些方法,用于要求用户输入Name等并返回它们,该类中的一个示例是:

public static int setStudentNo(){
    Console.Write("Please enter Student Number: ");
    int StudentNo = int.Parse(Console.ReadLine());
    return StudentNo;
}

然后我试图访问这些数据,并在屏幕上显示:

public static void getstudent(){
        student student;
        student.displayDetails();
    }

这只是显示所有变量的空值,但是,如果我在第一次设置值后调用它,它会正确显示,最后结构看起来像:

public struct student{
    public String name;
    public int studentno;
    public String course;
    public int year;
    public void displayDetails(){
        Console.WriteLine("Name: " + name);
        Console.WriteLine("Student Number: "+studentno);
        Console.WriteLine("Course: "+course);
        Console.WriteLine("Year: "+year);
    }

以不同的方法从结构中获取信息';s使用C#设置

据我所见,您在addingstudent()中使用了student student,但在getstudent()中使用了另一个student student。。。你没有使用同一个对象。。。

你可以有一个类,它有结构和两个函数

class A
{
     studnet studnet;
     public static void addingstudent()
     {        
        AddStudent details = new AddStudent();
        student.name = details.setName(); 
        student.course = details.setCourse();
        student.studentno = details.setStudentNumber(); 
        student.year = details.setYear();  
        menu(); 
     } 
     public static void getstudent()
     {    
         student.displayDetails(); 
     } 
}

然后只需创建一个新的a类,并按照您想要的方式操作数据

创建可变结构首先是个坏主意,如果数据是可变的,那么你真的应该创建一个类。

此外,您没有将stuct作为参数传递,例如在getstudent中,您每次都要创建一个新的学生对象,这就是student.displayDetails();显示为null的原因,因为在调用它之前,您没有设置在线上创建的学生的任何属性。

    public static void getstudent()
    {
        Student student; // creates a new instance of the struct... 
        student.displayDetails(); // obviously student properties are null...
    }

你真的应该做以下事情。

public class Student
{
    public Student()
    {
       this.SetName();
       this.SetNumber();
       this.SetCourse()
       this.SetYear();
    }
    public override string ToString()
    {
        return string.Format(
                   "Name: {0}{4}Number: {1}{4}Course: {2}{4}Year: {3}{4}",
                    this.Name,
                    this.Number,
                    this.Course,
                    this.Year,
                    Environment.NewLine);
    }
    public void DisplayDetails()
    {
        Console.WriteLine(this.ToString());
    }
    public string Name { get; private set; }
    public string Number{ get; private set; }
    public string Course { get; private set; }
    public string Year { get; private set; }
    public static void SetName()
    {
      Console.WriteLine("Please enter Name: ");
      this.Name = Console.ReadLine();
    }
    public static void SetNumber()
    {
      Console.WriteLine("Please enter Number: ");
      this.Number = int.Parse(Console.ReadLine());
    }
    public static void SetCourse()
    {
      Console.WriteLine("Please enter Course: ");
      this.Course = Console.ReadLine();
    }
    public static void SetYear()
    {
      Console.WriteLine("Please enter Year: ");
      this.Year = int.Parse(Console.ReadLine());
    }
}
public class App
{
    public static void Main()
    {
       Student student1 = new Student(); // Create a student
       student1.DisplayDetails(); // show the details 
       student1.SetName(); // change the name
       student1.SetYear(); // change the year
       student1.DisplayDetails(); // show the new details 
       // etc...
    }
}