问题输出结果到命令行。

问题描述 投票:0回答:2
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"]

下面是我尝试解决Exerciseism.com上的练习“Leap”,因为我很难自学C#。该网站建议来这里寻求帮助。我已经在Mathematica中找到了逻辑(上图)但是当我在终端中运行dotnet run时,我的小C#程序没有返回任何内容。任何建议表示赞赏。

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);
    }
}
c# wolfram-mathematica
2个回答
1
投票

在Visual Studio中创建新的控制台项目时,将使用静态Program.cs方法自动添加名为Main的文件。这是您的应用程序的entry point。方法的第一行是首先执行的行。

它看起来像这样:

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

Microsoft Docs解释得更好:

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,但除非您有特殊需要,否则我宁愿选择默认行为。


0
投票

更新问题以便将来繁荣,有趣的是我通过添加以下内容解决了我自己的问题:

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

...来自PropertyGroup的.csproj文件的this tutorial website。阅读页面,我不能说我完全理解为什么它解决了我的问题;因此,如果有人可以更好地解释答案,则无法回答问题。 (它肯定与答案中其他地方提到的-main complier选项有关。)

© www.soinside.com 2019 - 2024. All rights reserved.