背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-58409.html    注册17xie 一起来写书 实现您的出书梦想!

2.9  Main()方法

本章的开头提到过,C#程序是从方法Main()开始执行的。这个方法必须是类或结构的静态方法,并且其返回类型必须是intvoid

虽然显式指定public修饰符是很常见的,因为按照定义,必须在程序外部调用该方法,但我们给该方法指定什么访问级别并不重要,即使把该方法标记为private,它也可以运行。

2.9.1  多个Main()方法

在编C#控制台或Windows应用程序时,默认情况下,编译器会在与上述签名匹配的类中查找Main方法,并使这个类方法成为程序的入口。如果有多个Main方法,编译器就会返回一个错误,例如,考虑下面的代码MainExample.cs

using System;

 

namespace Wrox.ProCSharp.Basics

{

   class Client

   {

      public static int Main()

      {

         MathExample.Main();

         return 0;

      }

   }

 

   class MathExample

   {

      static int Add(int x, int y)

      {

         return x + y;

      }

 

      public static int Main()

      {

         int i = Add(5,10);

         Console.WriteLine(i);

         return 0;

      }

   }

}

上述代码中包含两个类,它们都有一个Main()方法。如果按照通常的方式编译这段代码,就会得到下述错误:

csc MainExample.cs

Microsoft (R) Visual C# .NET Compiler version 8.00.40607.16

for Microsoft (R) .NET Framework version 2.00.40607

Copyright (C) Microsoft Corporation 2001-2003. All rights reserved.

 

MainExample.cs(7,23): error CS0017: Program 'MainExample.exe' has more than one entry point defined: 'Wrox.ProCSharp.Basics.Client.Main()'

MainExample.cs(21,23): error CS0017: Program 'MainExample.exe' has more than one entry point defined: 'Wrox.ProCSharp.Basics.MathExample.Main()'

但是,可以使用/main选项,其后跟Main()方法所属类的全名(包括命名空间),明确告诉编译器把哪个方法作为程序的入口点:

csc MainExample.cs /main:Wrox.ProCSharp.Basics.MathExample

2.9.2  Main()方法传送参数

前面的例子只介绍了不带参数的Main()方法。但在调用程序时,可以让CLR包含一个参数,将命令行参数转送给程序。这个参数是一个字符串数组,传统称args(C#可以接受任何名称)。在启动程序时,可以使用这个数组,访问通过命令行传送过来的选项。

下面的例子ArgsExample.cs是在传送给Main方法的字符串数组中迭代,并把每个选项的值写入控制台窗口

using System;

 

namespace Wrox.ProCSharp.Basics

{

   class ArgsExample

   {

      public static int Main(string[] args)

      {

         for (int i = 0; i < args.Length; i++)

         {

            Console.WriteLine(args[i]);

         }

         return 0;

      }

   }

}

通常使用命令行就可以编译这段代码。在运行编译好的可执行文件时,可以在程序名的后面加上参数,例如:

ArgsExample /a /b /c

/a

/b

/c



字数:2881    最后更新:7个月以前 [04-10 20:56]happyskynet 修改
本页编辑者:happyskynet  
[前一页]:2.8 命名空间  [后一页]:2.10 有关编译C#文件…
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号