Проблема с выводом результата в командную строку. - PullRequest
0 голосов
/ 08 сентября 2018
isALeapYear[x_Integer]:= 
If[(Mod[x,4]==0 && !Mod[x,100]==0) || (Mod[x,4]==0 && Mod[x,400]==0),ToString[x] <>" is a leap year", ToString[x] <> " is NOT a leap year"]

Ниже приведена моя попытка выполнить упражнение «Прыжок» с сайта Exercism.com, в котором я стараюсь научиться C #. Сайт предлагает прийти сюда за помощью. Я уже понял логику в Mathematica (см. Выше), но моя маленькая программа на C # ничего не возвращает, когда я запускаю dotnet run в терминале. Любые предложения приветствуются.

using System;

public static class Leap
{
    public static bool IsLeapYear(int year)
    {
        if (year % 4 == 0 && year % 100 == 0) 
        {
            return true;    
        }
        else
        {
            return false;
        }
    }

    public static void main()
    {
        int yearq = 2015;
        bool result = IsLeapYear(yearq);
        Console.WriteLine(result);
    }
}

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Обновляя вопрос о будущем процветании, интересно я решил свой собственный вопрос, добавив:

<IsPackable>false</IsPackable>
<GenerateProgramFile>false</GenerateProgramFile>

... в PropertyGroup файла .csproj из данного учебного веб-сайта . Читая страницу, я не могу сказать, что полностью понимаю, почему это решило мою проблему; следовательно, оставляя вопрос без ответа на тот случай, если кто-то сможет лучше объяснить ответ. (Это определенно было связано с опциями -main complier, упомянутыми в других разделах ответов.)

0 голосов
/ 09 сентября 2018

Когда вы создаете новый консольный проект в Visual Studio, автоматически добавляется файл с именем Program.cs статическим методом Main. Это entry point вашего заявления. Первая строка в методе - это строка, которая будет выполняться первой.

Это выглядит так:

namespace SomeNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
             // By default this line will execute first
        }
    }
}

Документы Microsoft объясняют это лучше:

Метод Main является точкой входа в приложение C #. (Библиотеки и услуги не требуют метода Main в качестве точки входа.) Когда приложение запущено, метод Main является первым методом, который прибег.

В программе на C # может быть только одна точка входа. Если у вас есть больше чем один класс, имеющий метод Main, вы должны скомпилировать вашу программу с параметром компилятора / main, чтобы указать, какой метод Main использовать точка входа.

Полагаю, вы не изменили Program.Main, а программа просто выполняется и ничего не делает.

Я предлагаю перенести содержимое вашего main метода в Program.Main.

static void Main(string[] args)
{
    int yearq = 2015;
    bool result = Leap.IsLeapYear(yearq);
    Console.WriteLine(result);
}

Если, однако, вам нужно указать более одного класса с помощью метода Main, вы должны указать компилятору, какой метод использовать в качестве точки входа, используя опцию компилятора -main.

У вас также есть возможность удалить Program.cs и переименовать ваш main в Main, но если у вас нет особой необходимости, я бы предпочел поведение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...