' Main':成员名称不能与其封闭类型相同

时间:2016-06-03 12:24:11

标签: c#

我收到错误

  

'主要':成员名称不能与其封闭类型相同   执行此代码。

此代码是从从VB6迁移到CSharp的项目生成的。另外,请让我知道从VB6toCS进行代码迁移的最佳方法

using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System;
using Microsoft.VisualBasic;
namespace Project1
{
    public partial class Main : System.Windows.Forms.Form
    {
        public Main()
        {
            vb6Globals.Main = this;
            InitializeComponent();
        }

        [STAThread]
        static void Main()
        {
            Application.Run(new Main());
        }

        private void Command1_Click(System.Object _sender, System.EventArgs _e1) 
        {
            this.Close();
            vb6Globals.Form1.Show(null);
        }

        private void Command3_Click(System.Object _sender, System.EventArgs _e1) 
        {
            this.Close();
            vb6Globals.Database.Show(null);
        }

        private void Form_Unload(int Cancel) 
        {
            this.Close();
        }
    }
}

3 个答案:

答案 0 :(得分:4)

static void Main()方法与Main类名称冲突。

我建议将Main方法移动到名为Program.cs的文件中的单独类(这是标准的)。

这样的事情:

public class Program
{
    [STAThread]
    public static void Main(string[] args)
    {
        Application.Run(new MainForm()); // use Form here, just to be clear
    }
}

答案 1 :(得分:0)

错误说明了一切。

将其重命名为其他内容或重命名该类。

[STAThread]
static void Main()
{
    Application.Run(new Main());
}

答案 2 :(得分:0)

在标准的Windows窗体项目中,Program.cs看起来就像是静态main方法。这是一个名为" Test"我刚刚做了:

namespace Test
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

这只是告诉它在您的应用程序启动时要运行什么。

除了program.cs之外,该代码不应该是任何地方。看起来您的代码目前在您的Main类中,这就是您遇到问题的原因。