1

学生オブジェクトを作成し、学生オブジェクトの 1 つの宣言されていない専攻の値を変更できるマルチクラス プログラムを作成しようとしています。

これが私のコードです:

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 にエラーが表示されたり表示されたりすることはありませんが、プログラムをコンパイルしようとするとすぐに、「エントリ ポイントに適した静的な「メイン」メソッドが含まれていません」というエラーが返されます。

ここや他のオンライン リソースで調査を行ったところ、メイン メソッドを静的に変更するなど、問題を解決するのに有望と思われることがいくつか見つかりましたが、試してみるとすぐに、メイン メソッドのすべてが構文エラーを返しています。非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です」

どんな助けでも大歓迎です。私はプログラマーを学んでいるので、それはかなり単純なものであり、概念を完全には理解していません。

4

4 に答える 4

4

メイン ルーチンは静的である必要があります。

 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()メソッドが使用する他のメソッドが静的メソッドではなくインスタンス メソッドであるためです。

于 2013-10-09T20:55:17.373 に答える
1

あなたはこれを持っています:

public void Main()

しかし、あなたはこれを持っている必要があります:

public static void Main()
于 2013-10-09T20:55:19.553 に答える
1

Mainメソッドは静的でなければなりません。他のメソッドもインスタンスの状態を使用しないため、静的に変更してStudentAppください。

于 2013-10-09T20:55:40.423 に答える
1

次のように static を public void Main に追加する必要があります。

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

他のクラスを使用する場合は、Student クラスとそのすべてのメソッド、および StudentApp などの Student に static を追加する必要があります。これは、静的メソッドが他の静的メソッドしか呼び出せないためです。

于 2013-10-09T20:55:50.297 に答える