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);
}
}
在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
,但除非您有特殊需要,否则我宁愿选择默认行为。
更新问题以便将来繁荣,有趣的是我通过添加以下内容解决了我自己的问题:
<IsPackable>false</IsPackable>
<GenerateProgramFile>false</GenerateProgramFile>
...来自PropertyGroup
的.csproj文件的this tutorial website。阅读页面,我不能说我完全理解为什么它解决了我的问题;因此,如果有人可以更好地解释答案,则无法回答问题。 (它肯定与答案中其他地方提到的-main complier选项有关。)