2015-10-22 2 views
1

Сохранение сообщения об ошибке не содержит статического основного метода для подходящей точки входа. Кто-нибудь сможет объяснить эту ошибку мне и, возможно, поможет мне исправить это? Благодарю. Новинка от 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; 
     } 
    } 
} 
+0

Если весь код состоит только из одного этого тогда ошибка более чем ясно. В вашей программе требуется основной метод. Это точка начала выполнения кода. – Steve

+0

@Steve, как я могу это сделать? – cv28

ответ

0

Если весь код состоит только из блока, показанного выше, то ошибка более чем ясна. В вашей программе требуется основной метод.

Основным методом является, по договоренности, точка по умолчанию, в которой начинает выполняться код. Вы можете получить здесь more in depth explanation

Так, к примеру, вам нужно добавить следующий код

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) 
} 
+0

Привет, к сожалению, все еще не работает, узнав об этом. – cv28

+0

Ошибка Нет перегрузки метода «Authenticate» принимает аргументы 0 – cv28

+0

Ошибка \t \t 2 «_djv.Authenticator» не содержит определение для «InitialValues» и не метод расширения «InitialValues» принимающую первый аргумент типа «_djv. Authenticator '(вы не указали директиву использования или ссылку на сборку?) – cv28

0

Все исполняемые программы должны иметь главную функцию где-то в проекте, который скомпилирован в exe.

Если вы хотите просто скомпилировать класс (например, в dll), тогда вы должны установить его как «тип проекта» в визуальной студии.

Самый простой способ - создать новый проект, но выбрать библиотеку классов в качестве типа проекта, а затем вставить туда код. В качестве альтернативы вы можете использовать командную строку для компиляции файла в DLL, как так:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library Authenticator.cs 
Смежные вопросы

 Смежные вопросы