(我是编程和本网站的初学者。提前:如果我以错误的方式使用本网站时出错,我会道歉。)
我试图将以下代码用于mandelbrot程序。我需要程序返回' n'但是当我调试时,我收到一条错误消息,说该程序没有合适的静态主方法:
错误1程序&c; \ Users \ Alain \ Documents \ Visual Studio 2013 \项目\曼德尔布罗\ PROJECT1 \ PROJECT1 \ OBJ \调试\ 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;
}
}
}
答案 0 :(得分:3)
您的问题是main()
需要Main()
。错误消息(您稍后才添加到问题中)非常明确 - 当编译器给您一个错误或警告时,它是有原因的,您应该仔细阅读。
由于我已将此作为评论添加到另一个答案中,因此您可以在C#程序中声明Main()
:http://msdn.microsoft.com/en-us/library/acy3edy3.aspx如果您按照该顶级文章中的链接进行操作,则可以找到编译器将接受的各种替代Main
声明。
作为对您的代码的评论(与问题没有严格关联):您不需要编写double f = new double();
然后单独分配值(尽管可以)。你可以写:
double f = 0;
double
和int
是值类型,声明值类型会隐式创建实例。在读取它们之前,您仍然需要为它们分配某种值(否则编译器会抱怨尝试使用未初始化的变量)。
答案 1 :(得分:0)
C#程序主要入口点的签名必须是:
static void Main(string[] args)
{
}
检查:http://msdn.microsoft.com/en-us/library/acy3edy3.aspx
答案 2 :(得分:0)
C#区分大小写,因此您必须始终注意大小写。
Main
和main
是两种不同的方法。
C#需要Main()
作为其切入点。 main()
只是另一种方法。
顺便说一下,这是C#编译器的选择,而不是.NET。低级汇编代码使用.entrypoint指令定义它。
.method public static void Main() cil managed {
.entrypoint
如果您使用MSIL编写自己的.NET程序集,则可以决定使用main或foo作为&#34; main&#34;程序
另一个有趣的警告,您实际上可以返回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;
}