将结果输出到命令行时出现问题。

时间:2018-09-08 16:15:10

标签: c# wolfram-mathematica

True

下面是我尝试解决自己在C#方面的困难时,尝试从Exercism.com解决练习“ Leap”的尝试。该网站建议您来这里寻求帮助。我已经弄清楚了Mathematica中的逻辑(如上),但是当我在终端中运行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"] 时,我的C#小程序没有返回任何内容。任何建议表示赞赏。

dotnet run

2 个答案:

答案 0 :(得分:1)

在Visual Studio中创建新的控制台项目时,将使用静态Main方法自动添加名为Program.cs的文件。这是您的应用程序的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,但是除非您有特殊需要,否则我会选择默认行为。< / p>

答案 1 :(得分:0)

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

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

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