【发布时间】:2011-05-25 10:05:35
【问题描述】:
在 C# 中,直接从 Main() 获取命令行参数会省略 exe 名称,这与 C 的传统相反。
通过 Environment.GetCommandLineArgs 获取相同的命令行参数包括它。
我是否因为这种明显的不一致而遗漏了一些很好的逻辑原因?
class Program
{
static void Main(string[] args)
{
Console.WriteLine(string.Format("args.Length = {0}", args.Length));
foreach(string arg in args)
{
Console.WriteLine(string.Format("args = {0}", arg));
}
Console.WriteLine("");
string[] Eargs = Environment.GetCommandLineArgs();
Console.WriteLine(string.Format("Eargs.Length = {0}", Eargs.Length));
foreach (string arg in Eargs)
{
Console.WriteLine(string.Format("Eargs = {0}", arg));
}
}
}
输出:
C:\\ConsoleApplication1\ConsoleApplication1\bin\Debug>consoleapplication1 xx zz aa
args.Length = 3
args = xx
args = zz
args = aa
Eargs.Length = 4
Eargs = consoleapplication1
Eargs = xx
Eargs = zz
Eargs = aa
【问题讨论】:
-
首先不是c#而是.net框架
-
并不矛盾,只是两种不同的做事方式。前者不返回可执行文件,而后者则返回。它们有不同的用途。
标签: c# visual-studio command-line