故障排除:不包含适用于入口点的静态“主要”方法

我正在尝试创build一个创build学生对象的多类程序,然后允许您为其中一个学生对象更改未声明的主题的值。

这是我的代码:

StudentApp.cs

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PA04CoddR { class StudentApp { public void Main() { DisplayTitle(); Student firstStudent = new Student("Robert", "Codd"); DisplayInfo(firstStudent); Student secondStudent = new Student("Alexander", "Clemens", "FIN"); DisplayInfo(secondStudent); GetMajor(firstStudent); DisplayInfo(firstStudent); TerminateProgram(); } public void DisplayTitle() { Console.WriteLine("Programming Assignment 4 - Creating a Class - Robert S. Codd"); Console.WriteLine(); Console.WriteLine("____________________________________________________________"); } public void DisplayInfo(Student newStudent) { Console.WriteLine("Frist Name: " + newStudent.GetFirstName); Console.WriteLine("Last Name: " + newStudent.GetLastName); Console.WriteLine("Major: " + newStudent.GetMajor); } public void GetMajor(Student newStudent) { Console.WriteLine("\tHello {0} {1}", newStudent.GetFirstName, newStudent.GetLastName); Console.WriteLine("\tPlease enter your major: "); string majorIn = Console.ReadLine(); Console.WriteLine(); newStudent.SetMajor(majorIn); } public void TerminateProgram() { Console.WriteLine("___________________________________________________________"); Console.WriteLine("PRESS ANY KEY TO TERMINATE..."); Console.Read(); } } } 

Student.CS

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PA04CoddR { class Student { private string firstName; private string lastName; private string major; public Student() { } public Student(string firstName, string lastName) { firstName = GetFirstName; lastName = GetLastName; major = "Undeclared"; } public Student(string firstName, string lastName, string major) { firstName = GetFirstName; lastName = GetLastName; major = GetMajor; } public string GetFirstName { get { return firstName; } set { firstName = value; } } public string GetLastName { get { return lastName; } set { lastName = value; } } public string GetMajor { get { return major; } set { major = value; } } public string SetMajor(string majorIn) { major = majorIn; return majorIn; } } } 

我没有在IDE中列出或给出错误,但只要我尝试编译程序,它将返回错误:“不包含适合于入口点的静态”main“方法”

我在这里和其他在线资源做了一些研究,发现了一些似乎很有希望解决我的问题,如改变主要方法为静态,但只要我试图在我的主要方法中的每一件事是返回一个语法错误:“一个对象引用是非静态字段,方法或属性所必需的“

任何帮助都将不胜感激,我是一个学习程序员,所以我相信这是相当简单的东西,我只是不完全理解的概念。

你的主例程需要是静态的:

  public static void Main() { 

但是,这样做需要您创建一个StudentApp的实例:

  public static void Main() { var app = new StudentApp(); app.DisplayTitle(); // Call method on the instance // Do the same for your other methods... 

这是因为你的Main()方法使用的其他方法是实例方法,而不是静态方法。

你有这个:

 public void Main() 

但是你需要有这个:

 public static void Main() 

您的Main方法必须是静态的,将StudentApp的其他方法更改为静态,因为它们不使用任何实例状态。

你必须添加静态公共无效的主要是这样的:

 public static void main(string[]args) { //Your code } 

如果要使用其他类,则必须将静态添加到Student类及其所有方法,并将Student添加到StudentApp。 这是因为静态方法只能调用其他静态方法。