C# 代码赢得';t返回值?
(我对编程和本网站都是初学者。提前:如果我以错误的方式使用本网站,我会道歉。) 我正在尝试将以下代码用于mandelbrot程序。我需要程序返回“n”,但调试时,我收到一条错误消息,说明程序没有合适的静态main方法: 错误1程序'c:\Users\Alain\Documents\Visual Studio 2013\Projects\Mandelbrot\Project1\Project1\obj\Debug\Project1.exe' 不包含适用于条目的静态“Main”方法 C点:\Users\Alain\Documents\visualstudio 2013\Projects\Mandelbrot\Project1\Project1\CSC Project1 虽然我可以清楚地看到代码中有一个“main”方法。 有人知道问题出在哪里吗 我的代码(C#):C# 代码赢得';t返回值?,c#,C#,(我对编程和本网站都是初学者。提前:如果我以错误的方式使用本网站,我会道歉。) 我正在尝试将以下代码用于mandelbrot程序。我需要程序返回“n”,但调试时,我收到一条错误消息,说明程序没有合适的静态main方法: 错误1程序'c:\Users\Alain\Documents\Visual Studio 2013\Projects\Mandelbrot\Project1\Project1\obj\Debug\Project1.exe' 不包含适用于条目的静态“Main”方法 C点:\User
使用系统;
命名空间Windows窗体应用程序1
{
公共类公式
{
公共静态int main()
{
double f=新的double();
double x=新的double();
双y=新的双();
双a=新的双();
双b=新的双();
int n=新的int();
double max=新的double();
double schaal=新的double();
double afstand=新的double();
x=0.5;
y=0.8;
n=0;
a=0;
b=0;
//最大值=发票3
//schaal=发票4
afstand=0;
虽然(afstand您的问题是main()
需要是main()
。错误消息(您只是在后面添加到问题中)在这一点上非常清楚-当编译器给您一个错误或警告时,它是有原因的,您应该仔细阅读
由于我已经在另一个答案中添加了这一注释,下面是如何在C#程序中声明Main()
:如果您遵循那篇顶级文章中的链接,您可以找到编译器将接受的各种可选Main
声明
作为对代码的注释(与问题没有严格的关系):您不需要编写double f=new double();
,然后分别赋值(尽管您可以)。您只需编写:
double f = 0;
double
和int
是值类型,声明值类型会隐式创建实例。在读取它们之前,您仍然必须为它们指定某种值(否则编译器会抱怨尝试使用未初始化的变量).C#计划主要入口点的签名必须是:
static void Main(string[] args)
{
}
检查:
- Main在类或结构中声明。Main必须是静态的,并且不应是公共的。(在前面的示例中,它接收private的默认访问权限。)封闭的类或结构不要求是静态的
- Main可以具有void或int返回类型
- Main方法可以使用字符串[]声明,也可以不使用字符串[]声明使用命令行参数的参数。当使用VisualStudio创建Windows窗体应用程序时,可以手动添加参数,或者使用环境类获取命令行参数。参数被读取为零索引命令行参数。不像C和C++,程序的名称不被视为第一个。命令行参数
C#区分大小写,所以您必须始终注意大小写
Main
和Main
是两种不同的方法
C需要Main()
作为其入口点。Main()
只是另一种方法
顺便说一句,这是C#编译器的选择,而不是.NET。低级汇编代码使用.entrypoint指令定义它
.method public static void Main() cil managed {
.entrypoint
如果您使用MSIL编写自己的.NET程序集,您可以决定使用main或foo作为“main”程序
另一个有趣的警告是,您实际上可以返回一个在Main()中使用的值。监视Main()调用本身。现在我不建议这样做,但它表明Main只是另一个函数,尽管它将registerd作为模块的入口点
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;
}
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;
}