不包含用于合适入口点的静态主方法

本文关键字:静态 方法 入口 包含 用于 | 更新日期: 2023-09-27 18:18:54

Keep get error message不包含用于合适入口点的静态main方法。有人能解释这个错误给我,并可能帮助我修复它吗?谢谢。c#新功能

 {
    class Authenticator
    {
        private Dictionary<string, string> dictionary = new Dictionary<string, string>();
        public void IntialValues()
        {
            dictionary.Add("username1", "password1");
            dictionary.Add("username2", "password2");
            dictionary.Add("username3", "password3");
            dictionary.Add("username4", "password4");
            dictionary.Add("username5", "password5");
        }
        public bool Authenticate(Boolean authenticated)
        {
            Console.WriteLine("Please enter a username");
            string inputUsername = Console.ReadLine();
            Console.WriteLine("Please enter your password");
            string inputPassword = Console.ReadLine();
            if (dictionary.ContainsKey(inputUsername) && dictionary[inputUsername] == inputPassword)
            {
                authenticated = true;
            }
            else
            {
                authenticated = false;
            }
            return authenticated;
        }
    }
}

不包含用于合适入口点的静态主方法

如果您的所有代码只包含上面显示的块,那么错误就很明显了。在程序中需要一个Main方法。

按照约定,Main方法是代码开始执行的默认点。你可以在这里得到更深入的解释 因此,例如,您需要添加以下代码
class Authenticator
{
    static void Main(string[] args)
    {
         Authenticator au = new Authenticator();
         au.InitialValues();
         if(au.Authenticate())
            Console.WriteLine("Authenticated");
         else
            Console.WriteLine("NOT Authenticated");
         Console.WriteLine("Press Enter to end");
         Console.ReadLine();
    }
    // Move the boolen variable inside the method
    public bool Authenticate()
    {
        bool authenticated = false;
        Console.WriteLine("Please enter a username");
        string inputUsername = Console.ReadLine();
        Console.WriteLine("Please enter your password");
        string inputPassword = Console.ReadLine();
        if (dictionary.ContainsKey(inputUsername) && dictionary[inputUsername] == inputPassword)
        {
            authenticated = true;
        }
        else
        {
            authenticated = false;
        }
        return authenticated;
    }
}
顺便说一下,您应该删除在Authenticate方法的输入中传递的参数。您应该将其声明为一个内部变量,根据检查的结果设置它并返回它。

但是,您可以完全删除该变量,写入

    ....
    return (dictionary.ContainsKey(inputUsername)) && 
           (dictionary[inputUsername] == inputPassword)
}

所有可执行程序必须在项目的某个地方有一个Main函数,该函数被编译为exe。

如果你只是想编译一个类(例如到一个dll),那么你必须将其设置为visual studio中的"项目类型"。

最简单的方法是创建一个新项目,但选择类库作为项目类型,然后将代码粘贴在那里。或者,您可以使用命令行将文件编译为dll,如下所示:

c:'Windows'Microsoft.NET'Framework'v4.0.30319'csc.exe /target:library Authenticator.cs