为什么这个程序不能识别void函数?

时间:2012-09-04 15:18:54

标签: c# .net

我一直在尝试在C#.NET上创建这个控制台应用程序但是我收到此错误消息:

  

错误1预期的类,委托,枚举,接口或结构

我是C#的新手,之前我做过C ++。

主要文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


public void Main(string[] args)
{
  string repositories = args[0];
  string transaction = args[1];

  var processStartInfo = new ProcessStartInfo
                           {
                             FileName = "svnlook.exe",
                             UseShellExecute = false,
                             CreateNoWindow = true,
                             RedirectStandardOutput = true,
                             RedirectStandardError = true,
                             Arguments = String.Format("log -t \"{0}\" \"{1}\"", transaction, repositories)
                           };

  var p = Process.Start(processStartInfo);
  var s = p.StandardOutput.ReadToEnd();
  p.WaitForExit();

  if (s == string.Empty)
  {
    Console.Error.WriteLine("Message must be provided");
    Environment.Exit(1);
  }

  Environment.Exit(0);
}

6 个答案:

答案 0 :(得分:8)

主要需要是静态的。

public static void Main

此外,您需要将其包装到其中包含类的命名空间中。 VS 2010提供的标准控制台应用程序模板如下所示,您可以查看它:

namespace ConsoleApplication3
{
    class Program
    {
       static void Main(string[] args)
       {
       }
    }
}

答案 1 :(得分:3)

您缺少程序中的课程=)。 Asweel作为命名空间。那么主虚空应该是静态方法

namespace MyApplication
{
    static class Program
    {
        static void Main()
        {
        }
    }
}

答案 2 :(得分:3)

C#中的每个方法都必须包含在classstruct中。没有办法在C#中定义独立(“顶级”)函数。

尝试:

public class Program
{
 public static void Main(string[] args)
 {

最后还有一个}

如果您来自C ++背景,正如您所指出的那样,您也不应该认为structclass具有与C ++相同的相同点和不同点。

答案 3 :(得分:2)

首先,您是在类或结构中包含该方法吗?

您必须声明包含在类或结构中的方法,因为方法不是根成员。

答案 4 :(得分:1)

主要需要是静态的,并且在课堂内:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

public class Program 
{
    public static void Main(string[] args) 
    { 
        string repositories //...

答案 5 :(得分:1)

C#中的函数必须位于类或结构中。只有委托,类,结构,枚举和接口才能存在于命名空间级别。

public static class MyClass
{
    public static void Main (string[] paArguments) { /* ... */ }
}