使用变量初始化对象

Coo*_*bes 0 c# string variables struct object

这可能最终是一个快速的"无法完成"但是我已经查看过,无法找到我的特定查询的答案.

我的问题是我有一个用于保存学生详细信息的结构,现在说我有两个学生,一个叫Mike,另一个叫Dave,我想获得每个屏幕上的每个细节我在我的结构中有一个方法如下:

public struct student{
   public String name, course;
   public int year, studentno;

   public void displayDetails(){
        Console.WriteLine("Name: "+name);
        Console.WriteLine("Course: "+course);
        Console.WriteLine("Student Number: "+studentno);
        Console.WriteLine("Year of Study: "+year);
        Console.WriteLine("\n\nPress any key to Continue....");
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在要显示详细信息,我可以使用说,Mike.displayDetails(); 或者Dave.displayDetails();

有没有办法我可以要求用户输入名称,然后使用该名称来获得正确的学生?例如,我想使用:

Console.Write("Please enter students name: ");
String surname = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

然后以某种方式使用:

surname.displayDetails();
Run Code Online (Sandbox Code Playgroud)

要显示正确的学生,这可行吗?

dev*_*tal 6

对于字符串类型的扩展方法是可行的,但肯定不推荐.为什么不使用LINQ找到一个学生姓氏的学生?

List<Student> students 
   = new List<Student>
      { 
         new Student { Surname = "Smith" }, 
         new Student { Surname = "Jones" } 
      };

Student studentJones = students.FirstOrDefault(s => s.Surname == "Jones");
Run Code Online (Sandbox Code Playgroud)

其他注意事项:

  • 使用类,而不是结构,除非您有充分的理由这样做
  • 使用PascalCase作为方法和类型名称
  • 避免使用公共字段,而是使用属性