【问题标题】:What Parameters ConsoleApplication Sends to Main() [closed]什么参数控制台应用程序发送到 Main() [关闭]
【发布时间】:2014-09-23 06:39:59
【问题描述】:

我尝试将Console Applicationclass Program 转换为常规类,以便将其集成到Windows Application 项目中。

我想调用void Main 方法。我应该发送什么参数?

课堂活动:

public static void Main(string[] args)

在另一个班级:

Program.Main(?);

【问题讨论】:

  • 如果你不使用它,你可以从 main 方法中删除 string[] args 参数
  • 不必顺便把string[] args用作参数..
  • @SonerGönül,但是类 Program 使用它们,所以我需要它们
  • 我不会尝试致电Program.Main()。它是控制台应用程序的代码。您的 GUI 应用程序中需要不同的代码。然后您声称使用了命令行参数,但您希望我们告诉您要传递哪些参数。你知道你自己的代码实际上在做什么吗?
  • 这个问题听起来像:I have a method Sum(int x, int y) what should I pass to my function ?

标签: c# parameters console-application main windows-applications


【解决方案1】:

我同意其他人的观点,我没有看到问题......

无论如何,args 字符串数组包含启动时提供给程序集的 args。例如:

"C:\myApp.exe arg1 arg2 arg3"

第一个是被调用的可执行文件,然后是 arg1、arg2 和 arg3。 (大小为 4 的数组)。

如果你想通过 CLI 调用 Main,只需执行以下操作:

Programe.Main(new string[] {String.Empty, "arg1", "arg2", "arg3"});

之后,它将始终取决于您在 CLI 应用程序中使用参数的方式。

重构您的应用程序并使用 Program.Main 作为 CLI 入口点而不是“应用程序”入口点是一个好主意。因此,您将能够使用多个入口点访问同一逻辑。

【讨论】:

  • 谢谢,我会努力更新的。
【解决方案2】:

如果您想要实现的是将 Windows 应用程序可执行文件启动时传递的参数传递给 Program.Main(),您可以这样做:

Program.Main(Environment.GetCommandLineArgs());

但是,将方法保留为“主要”是个坏主意,因为您最终会在 Windows 应用程序中使用 2 个主要方法(一个由 Visual Studio 创建,一个由您创建)。

【讨论】:

  • 这听起来像我要找的东西!重新评论你对这两个主要的评论:如果它是一个在某些事件上调用并导致 Program.Main 被调用的 dll - 它仍然有问题吗?
  • 好吧,如果你的'Main'函数在一个dll中,它可能没问题(从未尝试过)但无论如何,'Main'应该保留给应用程序入口点,因为运行-time 将在启动应用程序时查找具有该名称的静态方法。在编译应用程序时可以使用 /main' 选项来指定哪个类包含 Main,但我不推荐它。此外,Main 通常应该包含很少的代码,大多数时候它会调用应用程序的一个类中的一些其他方法来完成实际工作......
  • 所以如果是 dll,只需重命名 Main 就是完整的解决方案?
  • 是的,或者即使您将其保留在应用程序本身中。
猜你喜欢
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多