以不同的方法从结构中获取信息';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);
}
据我所见,您在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...
}
}