2015-08-01 1 views
2

Я пытаюсь скомпилировать и запустить эту C программу # в терминале:Что означает «Корпус основного конструктора не допускается»?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 


public class largestNumber 
{ 
    public static void Main(string[] args); 
    { 
     int UserNumber1 = int.Parse(Console.ReadLine("Enter a number:")); 
     int UserNumber2 = int.Parse(Console.ReadLine("Enter a second number:")); 
     int UserNumber3 = int.Parse(Console.ReadLine("Enter a third number:")); 

     Console.WriteLine("Your numbers were, " + UserNumber1 + ", " + UserNumber2 + ", and " + UserNumber3); 
    } 
} 

однако, когда я делаю это так, эта ошибка возникает:

Number.cs(11,2): error CS9010: Primary constructor body is not allowed 

Может кто-то объяснить, что ошибка имеет в виду ?

+1

'public static void Main (string [] args);' - посмотреть конец строки. Исправьте простую типографскую ошибку. – user2864740

+0

Хотя, возможно, интересно, возможно, расширить то, что означает компилятор, с помощью «основного тела конструктора» (или если это просто след из плохого синтаксиса). – user2864740

+0

Возможно, стоит отметить, что основные конструкторы - это C# 6, поэтому многие люди могут не знать, что они еще. – DavidG

ответ

2

Несколько проблем с приложением: Реализации

  • Метод не принимающие ; в конце.

  • Console.ReadLine не принимает никаких аргументов. Его единственная цель - прочитать консоль, поэтому вы должны использовать Console.WriteLine, чтобы задать свои вопросы, например «Введите номер».

  • Вы должны обернуть свой класс в пространстве имен (который обычно называют как ваш .csproj проект)

И, пожалуйста, следуйте C# условности, с именами классов, как PascalCase и переменными, как верблюжьи. Когда вы делитесь своим кодом, другим разработчикам проще читать и понимать его.

Так оно и должно выглядеть следующим образом:

using System; 

namespace MyApp 
{ 
    public class LargestNumber 
    { 
     public static void Main(string[] args) 
     { 
      Console.WriteLine("Enter a number:"); 
      int userNumber1 = int.Parse(Console.ReadLine()); 
      Console.WriteLine("Enter a second number:"); 
      int userNumber2 = int.Parse(Console.ReadLine()); 
      Console.WriteLine("Enter a third number:"); 
      int userNumber3 = int.Parse(Console.ReadLine()); 

      Console.WriteLine("Your numbers were, " + userNumber1 + ", " + userNumber2 + ", and " + userNumber3); 
     } 
    } 
} 

Пожалуйста, обратите внимание, что я удалил некоторые из ваших бесполезных using заявлений.

Вы также должны переименовать свой файл Number.cs в команду LargestNumber.cs, и, как правило, ваш файл должен иметь то же имя, что и ваш класс.


Кроме того, я не получаю такую ​​же ошибку компиляции, как вы, даже путем копирования кода.

Под VS2015 У меня есть «Не абстрактный метод и не extern должен объявить тело» (вызванный дополнительной точкой с запятой), а «Метод ReadLine имеет 0 параметров, но вызывается с 1 аргументом (ами) ». Ошибка, которую вы получаете, может быть вызвана синтаксическими ошибками в другом месте вашего кода.

+0

Благодарим вас за своевременный ответ! Я был немного смущен относительно того, как работают WriteLine и ReadLine, поэтому благодарим за это. Для дальнейшего использования была ошибка, вызванная ';' после основного метода? –

+1

Я не могу воспроизвести вашу ошибку на моем VS2015 (я подробно описал те, что получил после ответа), а Googling для сообщения об ошибке/идентификатора ошибки ничего не дает. Возможно, это вызвано сочетанием факторов. –

+0

Хорошо, я использовал MonoDevelop на OS X, если это что-то значит. В любом случае, теперь это исправлено. –

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