2014-09-27 3 views
-1

(Я начинаю как программировать, так и на этом сайте. Заранее прошу извинить, если я ошибаюсь с точки зрения использования этого сайта.)Код не вернет значение?

Я пытаюсь использовать следующий код для программа mandelbrot. Мне нужна программа для возврата 'n', но когда я отлаживаю сообщение, я получаю сообщение об ошибке, говорящее, что программа не имеет подходящего статического основного метода:

Ошибка 1 Программа 'c: \ Users \ Alain \ Documents \ Visual Studio 2013 \ Projects \ Mandelbrot \ Project1 \ Project1 \ obj \ Debug \ Project1.exe ' не содержит статический метод' Main ', подходящий для записи точка C: \ Users \ Alain \ Documents \ Visual Studio 2013 \ Projects \ Mandelbrot \ Project1 \ Project1 \ CSC Project1

Хотя я ясно вижу, что в коде есть «основной» метод. Кто-нибудь знает, в чем проблема?

мой код (C#):

using System; 

namespace WindowsFormsApplication1 
{ 
    public class formule 
    { 
     public static int main() 
     { 
      double f = new double(); 
      double x = new double(); 
      double y = new double(); 
      double a = new double(); 
      double b = new double(); 
      int n = new int(); 
      double max = new double(); 
      double schaal = new double(); 
      double afstand = new double(); 

      x = 0.5; 
      y = 0.8; 
      n = 0; 
      a = 0; 
      b = 0; 
      // max = invoer 3 
      //schaal = invoer 4 
      afstand = 0; 

      while (afstand <= 2) 
      { 
       a = (a * a - b * b + x); 
       b = (2 * a * b + y); 
       afstand = Math.Sqrt((x * x) + (y * y)); 

       n++; 
      } 

      return n; 
     } 
    } 
} 

ответ

3

Ваша проблема заключается в том, что main() должна быть Main(). Сообщение об ошибке (которое вы только добавили позже к вопросу) довольно понятно: когда компилятор дает вам сообщение об ошибке или предупреждении, он существует по какой-то причине, и вы должны внимательно прочитать его.

Поскольку я добавил это как комментарий уже другой ответ, вот как вы можете объявить Main() в C# программе: http://msdn.microsoft.com/en-us/library/acy3edy3.aspx Если вы будете следовать по ссылкам в этом высшем уровне статьи, вы можете найти различные альтернативные Main заявления о том, что компилятор примет.

В качестве комментария к вашему коду (строго не связанному с вопросом): вам не нужно писать double f = new double();, а затем присваивать значение отдельно (хотя вы можете). Вы можете просто написать:

double f = 0; 

double и int типы значений и объявить тип значения создает экземпляр неявно. Вам все равно придется присваивать им какую-то ценность, прежде чем вы сможете их прочитать (иначе компилятор будет жаловаться на попытку использовать неинициализированную переменную).

0

Подпись главного входа точки программы C# должен быть:

static void Main(string[] args) 
{ 
} 

Проверил: http://msdn.microsoft.com/en-us/library/acy3edy3.aspx

  • Main объявляется внутри класса или структуры. Главное должно быть статичным, и оно не должно быть общедоступным. (В более раннем примере он получает доступ по умолчанию для частного доступа.) Вложенный класс или структура не обязательно должен быть статичным.
  • Main может иметь тип типа void или int.
  • Метод Main может быть объявлен с параметром string [] или без него, который содержит аргументы командной строки. При использовании Visual Studio для создания приложений Windows Forms вы можете добавить параметр вручную или использовать класс среды для получения аргументов командной строки. Параметры считываются как аргументы командной строки с нулевой индексацией. В отличие от C и C++, имя программы не рассматривается как первый аргумент командной строки.
0

C# чувствителен к регистру, поэтому вы всегда должны обращать внимание на корпус.

Main и main - это два разных метода.

C# нуждается в Main() в качестве точки входа. main() - это еще один метод.

Кстати, это выбор компилятора C#, а не .NET. Код сборки низкого уровня определяет его с помощью директивы .entrypoint.

.method public static void Main() cil managed { 
    .entrypoint 

Если вы пишете свои собственные сборки .NET с MSIL, вы можете решить, использовать основные или Foo в качестве «главной» программы.

Еще одно интересное предостережение, вы можете фактически вернуть значение, которое используется в Main(). Вызовите Main(). Теперь я не рекомендую это, но он демонстрирует, что Main - это еще одна функция, хотя и зарегистрированная как точка входа для модуля.

static int Main(string[] args) 
    { 
     if (args.Length == 0) 
     { 
       args = new[] {"foo"}; 
       Main(args); // recursively call Main() 
       Console.WriteLine("2nd Main executed"); 
       return -1; // Parent main returns 
     } 

     // Child Main() finishes the work 
     Console.WriteLine("Main finished"); 

     return 0; 
    } 
Смежные вопросы