重命名封闭类后的主要方法错误

Posted

技术标签:

【中文标题】重命名封闭类后的主要方法错误【英文标题】:Main method error after renaming enclosing class 【发布时间】:2014-10-16 14:13:22 【问题描述】:

我正在学习 learncs.org 上的第一个教程并有一个问题。

这是示例中的代码:

using System;

public class Hello

    public static void Main()
    
        System.Console.WriteLine("Goodbye, World!");
    

这会在控制台中返回再见,世界,如图所示。 但是一旦我将公共课程Hello 更改为Hello2,它就不再起作用了。该教程没有显示它是如何执行的,所以我不知道它是如何完成的。

如果我将它命名为 Hello2,任何人都知道如何执行它?我试过了,但效果不太好:

using Hello2.Main();

以下是实际示例:Hello, World!

【问题讨论】:

该类通常命名为Program,但如果我将其更改为Program2,它仍然对我有用。 您的链接已失效 :) 你在网站上运行这个。如果您从 Visual Studio 运行它,更改类名不会影响任何内容。 当你试图学习一门语言时,你不应该处理教程,而是要处理语言。换个教程,看起来不太好。选择 CodeAcademy。 试试这本来自程序员天堂的免费电子书。它有点旧,它涵盖了 C# 2,但非常简单:ebooks.programmersheaven.com/csharp_ebook.pdf 【参考方案1】:

运行时正在调用Main 函数。它通常只会在您的程序中找到名为Main 的第一个函数并执行它。

然而如果您在项目设置的应用程序选项卡中明确设置启动对象,如果该类没有名为 Main 的函数(或者如果该类不存在),它将失败)。

尝试将其设置为“(未设置)”或您新命名的类,它应该可以工作。

【讨论】:

【参考方案2】:

您应该为您的应用程序设置 Startup 对象。右键单击项目,转到项目属性-> 应用程序,将启动对象更改为Hello2

请记住,只要您的应用程序中有一个入口点,即public static Main 方法并且您将启动对象指定为(Not Set),它就应该可以工作。

但如果你有多个类使用Main 方法,那么你必须显式指定 Startup 对象,(通过 GUI 或编译选项) 否则你会报错:

Application.exe 定义了多个入口点: 'Application.Hello2.Main()'。使用 /main 编译以指定类型 包含入口点。

【讨论】:

为什么一定是创业班?为什么我想用的时候就不能随便用? @ZeeTee 问题是您随时使用它。 某事需要开始。然后可以调用任何你想要的。您不是在这样做,而是在更改 main 的位置。 @ZeeTee,运行时必须遵循规范,规范说要在应用程序中找到入口点,然后执行它。正如我在回答中所说,如果您只有一个 Main 方法,那么只要您将 Startup 对象指定为 Not Set,您对类名称的更改就应该有效。

以上是关于重命名封闭类后的主要方法错误的主要内容,如果未能解决你的问题,请参考以下文章

stata 重命名

text 重命名计算机后的Visual Studio工作区

git分支重命名

大家的Android项目包命名规则是怎样的

linux下怎么批量重命名这些文件

Terraform 重命名资源而不删除