3.2 Main()和命令行参数
Main方法是程序的入口点,你将在那里创建对象和调用其他方法。
一个C#程序中只能有一个入口点,而Main方法是程序的入口点,程序控制在该方法中开始和结束。该方法在类或结构的内部声明。注意,它必须为静态方法,而不应为公共方法。它可以具有void(无返回参数)或int(整型返回类型)。声明Main方法时既可以使用参数,也可以不使用参数。参数可以作为从零开始索引的命令行参数来读取。
3.2.1 运用命令行参数
Main方法可以使用参数,在这种情况下它采用下列形式之一:
static int Main(string[] args) 或者static void Main(string[] args)
Main方法的参数是表示命令行参数的String数组。通常通过测试Length属性来检查参数是否存在,例如:
if (args.Length ==2) { System.Console.WriteLine("Please enter a numeric arg."); return 1; }
还可以使用Convert类或Parse方法将字符串参数转换为数值类型。例如,下面的语句使用Int64类上的Parse方法将字符串转换为long型数字:
long num = Int64.Parse(args[2]);
也可以使用别名为Int64的C#类型long:
long num = long.Parse(args[4]);
还可以使用Convert类的方法ToInt64完成同样的工作:
long num = Convert.ToInt64(s);
可以通过Main的可选参数来访问通过命令行提供给可执行文件的参数。参数以字符串数组的形式提供。数组的每个元素都包含一个参数。参数之间的空白被移除。例如,下面是对一个假想的可执行文件的命令行调用。
功能说明:显示了传递给命令行应用程序的命令行参数。
程序清单3-2
class CommandLine { static void Main(string[] args) { System.Console.WriteLine("parameter count = {0}", args.Length); for (int i = 0; i < args.Length; i++) { System.Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]); } } }
运行结果,如图3-1所示。
图3-1 显示传递给应用程序命令行参数
3.2.2 使用foreach访问命令行参数
循环访问数组的另一种方法是使用foreach语句,如下面的示例所示。foreach语句可以用于循环访问数组、.NET Framework集合类或任何实现IEnumerable接口的类或结构。
功能说明:使用foreach语句,循环地显示了传递给命令行应用程序的命令行参数。
程序清单3-3
class CommandLine2 { static void Main(string[] args) { System.Console.WriteLine("Number of command line parameters = {0}",args.Length); foreach (string s in args) { System.Console.WriteLine(s); } } }
运行结果如图3-2所示。
图3-2 使用foreach访问命令行参数
3.2.3 Main()返回值标识
Main方法可以是int类型的,如果不需要使用Main的返回值,则返回void可以使代码变得略微简单。
下面例子中的Main方法可以是void类型:
static void Main() { //在此输入代码,没有返回值 }
下面例子中的Main方法可以是int类型:
class MainReturnValTest { static int Main() { //输入代码 return 0; } }