-2

このコンソール アプリケーションを 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);
}
4

6 に答える 6

8

メインは静的である必要があります。

public static void Main

また、内部にクラスを持つ名前空間にラップする必要があります。VS 2010 が提供する標準のコンソール アプリ テンプレートは次のようになります。

namespace ConsoleApplication3
{
    class Program
    {
       static void Main(string[] args)
       {
       }
    }
}
于 2012-09-04T15:19:36.253 に答える
3

プログラムにクラスがありません =)。名前空間として Asweel。次に、メインのボイドは静的メソッドである必要があります

namespace MyApplication
{
    static class Program
    {
        static void Main()
        {
        }
    }
}
于 2012-09-04T15:21:08.890 に答える
3

C# のすべてのメソッドは、classまたは内に含まれている必要がありますstruct。C# で独立した (「トップ レベル」) 関数を定義する方法はありません。

試す:

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

そして最後におまけ}

あなたが示すように、あなたが C++ のバックグラウンドを持っている場合、C++ と同じ類似点と相違点があるstructと仮定してはいけません。class

于 2012-09-04T15:21:53.620 に答える
2

まず、メソッドをクラスまたは構造体に含めましたか?

メソッドはルート メンバーではないため、クラスまたは構造体に含まれるメソッドを宣言する必要があります。

于 2012-09-04T15:20:42.680 に答える
1

メインは静的で、クラス内にある必要があります。

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

public class Program 
{
    public static void Main(string[] args) 
    { 
        string repositories //...
于 2012-09-04T15:21:33.147 に答える
1

C# の関数は、クラスまたは構造体の内部にある必要があります。名前空間レベルに存在できるのは、デリゲート、クラス、構造体、列挙型、およびインターフェイスのみです。

public static class MyClass
{
    public static void Main (string[] paArguments) { /* ... */ }
}
于 2012-09-04T15:23:03.973 に答える