Visual C# - 缺少部分修饰符

Posted

技术标签:

【中文标题】Visual C# - 缺少部分修饰符【英文标题】:Visual C# - Missing partial modifier 【发布时间】:2015-10-28 05:04:18 【问题描述】:

我收到一条错误消息,提示“'projectName.Main' 类型的声明缺少部分修饰符;此类型的另一个部分声明存在。 从我能读到的关于这个错误的信息中,这是因为我有同名的类。如果我将主类修改为公共部分类 Main:Form,它确实有效,但我想知道为什么它会给我这个错误。我需要在 Main() 中初始化组件,尝试创建一个方法 start(),然后在加载事件中调用 main.Start(),但随后表单加载为空白。

namespace projectName

    public class Main : Form
    
        public Main() // Method: Starts the main form
        
            InitializeComponent();
        

        public void Main_Load(object sender, EventArgs e)
        // On load of main class, handle events and arguments
        
            Main main = new Main();
            main.getCurrentDomain();
        

        public void getCurrentDomain() // Method: Get current domain
        
            Domain domain = Domain.GetCurrentDomain();
        
     // Ends the main class

【问题讨论】:

在给定的命名空间中只能存在一个具有给定名称的类。您的程序集中不能有两个名为 projectName.Main 的类。但是,您可以在不同的地方声明同一 projectName.Main 类的不同块,这就是 partial 的用途。 Why use partial classes?的可能重复 【参考方案1】:

假设这是一个 Windows 窗体应用程序,问题在于 Visual Studio WinForms 设计器创建了另一个文件(例如 Main.designer.cs):

public partial class Main : Form

包含设计器生成的代码。

您的部分类源有效地与之合并 - 但它在两个源文件都声明该类为 partial 时发生。否则,您只是试图在同一个命名空间中声明两个具有相同名称的类,这是 C# 所禁止的。

【讨论】:

忘了看 Main.designer.cs,你是对的,先生 :)【参考方案2】:

还有另一个名为 .designer.cs 的文件。该文件包含类的部分定义,这就是定义 InitializeComponent 函数的地方。您需要为您的课程添加部分修饰符。

【讨论】:

以上是关于Visual C# - 缺少部分修饰符的主要内容,如果未能解决你的问题,请参考以下文章

c#类的修饰符都有哪些?

访问修饰符是 C# 中方法签名的一部分吗?

在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?

C#中类。方法。字段 的默认访问修饰符分别是啥?

C# 可以修改MVC匿名类型的访问修饰符吗

在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?