2015-12-21 4 views
2

Я получаю сообщение об ошибке «Мое тело первичного конструктора не допускается» и не может найти способ его исправить. Ошибка возникла из-за того, что я создал новый общедоступный метод, я также попытался использовать частные и защищенные методы, но ошибка все еще присутствовала. Здесь есть кто-то другой, который спросил то же самое question. Ответ, что конкретный человек получил приводит меня к мысли, что это может быть специфическими для OS X. Вот мой код:Ошибка «Корпус основного конструктора не допускается»

 string txt = WordBank(); 

     string[] words = Moduel.TextToArray("Text.txt"); 
     string compWord = Moduel.Random (words);  
     Console.WriteLine ("I have chosen a random word, try to guess it one letter at a time"); 
    } 

    public static void WordBank(); 
    { 
     string txt; 

     Console.WriteLine ("Would you like to " + 
      "(A) choose 4 letter words " + 
      "(B) choose 5 letter words " + 
      "(C) choose 6 letter words " + 
      "(E) choose 7 lette r words or more?" + 
      "(F) all words?"); 

     string input = Console.ReadLine(); 
     if (input = "A") 
      txt = "4 Letter Words.txt"; 
     else if (input = "B") 
      txt = "5 Letter Words.txt"; 
     else if (input = "C") 
      txt = "6 Letter Words.txt"; 
     else if (input = "E") 
      txt = "7 Letters or More.txt"; 
     else if (input = "F") 
      txt = "All Words.txt"; 
     else 
     { 
      Console.WriteLine("You haven't chosen a valid option, please try again"); 
      Main(); 
     } 
     return txt; 
    } 
} 

}

и здесь картина ошибки. Error Message.

+0

Почему это 'public static * void * WordBank', когда вы хотите вернуть строку? – Corak

+0

ценит повышатель за то, что он дал +1 этой основной ошибке. –

ответ

4

Ошибка в

государственной статической силы Wordbank();

Просто удалите точку с запятой от этой линии

государственной статической силы Wordbank()

И ваша функция вернула значение строки так определения функций изменяется на

общественности статической строка WordBank()

+0

Как насчет метода метода void, возвращающего строковое значение? –

+0

okey, спасибо, я отредактировал свой ответ – FatemehEbrahimiNik

3

public static void WordBank(); Снимите задний конец ; в этой строке. а также введите возвращаемый тип в string, если вам нужно вернуть строку из этой функции.

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

public static string WordBank() 
    { 
     string txt; 
     //Rest of code comes here 
     return txt; 
    } 
2

В настоящее время вы ; после объявления метода:

public static void WordBank(); 
{ 
    // code in your method 
} 

Имея точку с запятой после объявления метода является фактически то же самое, как с пустой метод, поэтому в вашем случае код такой же, как

public static void WordBank() 
{ 
} 
{ 
    // code in your method 
} 

, который является неправильным.

Для того, чтобы решить проблему удалить ; после имени метода:

public static void WordBank() 
{ 
    // code in your method 
} 
2

В вашем коде есть, конечно, количество ошибок.

  1. string txt = WordBank(); где, как ваша функция не возвращает ничего public static void WordBank(); его недействительным.
  2. ваш код, чтобы объявить функцию public static void WordBank(); не так, поскольку вам нужно удалить ; в конце.
  3. внутри функции вы заявляете return txt;, которая не является правильной, пока ваша функция фактически не возвращает что-то

и, следовательно, ваш код должен быть

public static string WordBank() 
{ 
    return "SomeString"; // in your case txt 
} 
0

Спасибо всем за ваши быстрые ответы, точка с запятой была проблема (теперь чувствую себя глупо: P).