一、Main()方法的简介
1、一般情况下,一个C#可执行程序只有一个应用程序对象(也就是就程序入口),但是在某些情况,可能会有多个应用程序对象(程序入口),如单元测试中,这个时候我们就需要通过命令行指定以哪个Main()方法作为程序的入口。
2、分析Main()方法,我们发现Main()方法通过static修饰,这个主要是让我们可以通过类名加方法的形式吊用Main()方法,我们再调用之前不需要创建对象的实例(也就是new出该对象)
3、分析Main()方法的参数是一个字符串(string[] args),这个参数可以包含任意数量的命令行输入参数
二、Main()方法的的其他形式1、默认情况下,Visual Studio生成的Main()方法有一个void返回值,并且只接收一个参数(一个字符串数组,用于接收任意数量的命令行输入参数)
public static void Main(string[] args) { //方法体 }
但是这不是唯一的Main()方法的形式,以下的Main()方法作为程序的入口点都是被允许的.
//整型返回类型,以字符串数组作为参数 static int Main(string[] args) { return 0; } //没有返回值,没有参数 static void Main() { } //整型返回类型,没有参数 static int Main() { }
注意、如果不给Main()方法提供一个修饰符,那么Main()方法默认就是私有的,当然Main()方法可以定义成共有的,但是Visual Studio会把程序的Main()自动定义成隐式私有的,以确保其他程序不能直接吊用另一个程序的入口点
很明显,选择怎样构造Main()方法要基于两个问题。第一当Main()完成且程序终止时,是否要向系统返回一个值。第二是否需要处理用户提供的命令行参数?如果是,他们将被保存到string数组中。
三、指定应用程序的错误代码
绝大多数的Main()方法会以void作为返回值,但是C#和其他C类型的语言一样,都可以从Main()返回一个int。根据惯例,返回值0表示程序正常结束,而其他值如(-1)表示程序有异常发生(要知道值0是自动返回的,即使Main()方法的原型结构返回为void)
四、在Main()方法中处理用户输入的命令行参数
在Main()方法中获取用户的命令行输入参数有很多中方法
1、通过传递给Main()方法的string[] args的参数中的args引用来对用户输入进行常规的操作
static int Main(string[] args) { for(int i=0;i<args.length;i++) { Console.WriteLine("Arg:{0}",args[i]); } //foreach处理 foreach(string Arg in args) { Console.WriteLine("Arg:{0}",Arg); } }
2、通过VS自带的可视化工具指定命令行参数
3、通过System.Environment的方法来获取命令行参数
static int Main(string[] args) { string[] theArgs=Environment.GetCommandLineArgs();//通过System.Environment类来获取命令行参数 for(int i=0;i<theArgs.length;i++) { Console.WriteLine("Arg:{0}",args[i]); } //foreach处理 foreach(string Arg in theArgs) { Console.WriteLine("Arg:{0}",Arg); } }