P25
“每一个c#可执行文件都必须有一个入口——Main()方法”
我一直对这个Main()方法有一些疑问。
那就是这里头的参数。
在JAVA里,main(String args[])中的参数是绝对不能去掉的,但是C#中的这个“神秘”的字符串数组是“可有可无”的。
那么,这个字符串数组到底是做什么的?
MSDN上是这么说的:
“所声明的 Main 方法可以具有包含命令行实参的 string[] 形参,也可以不具有这样的形参。 使用 Visual Studio 创建 Windows 窗体应用程序时,可以手动添加形参,也可以使用 Environment 类获取命令行实参。 形参读取为零索引的命令行参数。与 C 和 C++ 不同,程序的名称视为第一个命令行参数。”
class CommandLine { static void Main(string[] args) { // The Length property provides the number of array elements 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]); } } }
命令行输入 | 传递给 Main 的字符串数组 |
executable.exe a b c |
"a" "b" "c" |
executable.exe one two |
"one" "two" |
executable.exe "one two" three |
"one two" "three" |
那么,如果我没有加上这个形参,在程序运行的时候会出现什么情况呢?
经过测试,不会影响程序正常运行。
看到这,大致可以理解为,Main()中的形参就是一个可有可无的东西,看你的程序具体功能决定。
其实JAVA中main()的作用也大同小异,但是为了防止不设置参数,但是运行时传入参数会造成不良后果,于是便规定死了不能删掉而已。