【发布时间】:2011-02-22 11:43:26
【问题描述】:
所以我希望其他用户能够运行我的程序发送参数。这种事情怎么办?
【问题讨论】:
标签: c# console command-line-arguments
所以我希望其他用户能够运行我的程序发送参数。这种事情怎么办?
【问题讨论】:
标签: c# console command-line-arguments
如果你有一个 Main 方法(你将拥有一个命令行应用程序),你可以直接作为 args 字符串数组参数访问它们。
public static void Main(string[] args) {
var arg1 = args[0];
var arg2 = args[1];
}
如果您在代码中的其他位置,您可以访问静态 Environment.GetCommandLineArgs 方法
//somewhere in your code
var args = Environment.GetCommandLineArgs();
var arg1 = args[0];
var arg2 = args[1];
【讨论】:
你的意思是启动时的args?比如myapp.exe blah blah2 blah3
让你的主要方法看起来像这样:
public static void Main(string[] args)
{
}
现在args 是传递给程序的参数数组。所以在示例案例中,args[0] == "blah"、args[1] == "blah2" 等
【讨论】:
string[] args到底是用来做什么的?
程序从具有此签名的方法运行
public static void Main(string[] args)
参数args 将包含命令行参数,以空格分隔。
【讨论】:
myapp.exe "blah blah2",不会args[0] == "blah blah2"?
./mypapp.exe blah\ blah2
虽然 string[] args 工作得很好,但值得一提的是Environment.GetCommandLineArgs。
【讨论】:
您可以从Main 的可选string[] 参数中读取命令行参数:
static void Main(string[] args)
{
if (args.Length >= 1)
{
string x = args[0];
// etc...
}
}
请注意,以下 Main 方法的声明也是有效的,但您无法访问命令行参数:
static void Main()
{
// ...
}
有关详细信息,请参阅documentation。
【讨论】:
这是默认支持的,参数会出现在传递给你的程序的args数组中。
public static void Main(string[] args)
如果你说
App.exe Hello World What's Up
在命令行上,您将收到一个像这样的 args 数组:
[0] = "Hello"
[1] = "World"
[2] = "What's"
[3] = "Up"
由你决定你想要什么参数,它们将如何格式化,等等。
【讨论】:
试试这些:
http://sourceforge.net/projects/csharpoptparse/
http://www.codeproject.com/KB/recipes/command_line.aspx
它们基本上允许您定义 args 并以 OO 方式解析它们,而不必进行大量字符串比较之类的东西。我在java中使用了一个类似的,它很棒
【讨论】: