C#深入详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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;
              }
            }