<From C++ To C#> 那就开始吧

说了那么多道理,我们写一个程序看看。

先熟悉一下开发环境。这次我们就用VS2010。

新建一个控制台项目。VS帮我们生成了这么一段代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
这段代码似曾相识。它先用using引用了几个命名空间。我们在C++的时候经常使用的是using namespace std; 这里using还是using,namespace这个关键字被省略了。命名空间也变得更规范更有层次了。
接下来是namespace test1{}。这个跟C++中一致,就是给下面的代码设定一个命名空间叫做test1。我们发现C#对命名空间的要求更为强制了。
再往后,定义了一个类叫做Program。class Program{}。类的声明依旧没变。只不过原来我们都把类声明在.h文件中。而在C#里面完全没有了.h文件的踪影,也就是说没有了声明和定义之分,我们只要把自己想要的内容写在.cs文件中,如何关联这个问题完全交给编译器去处理。也正因此,再也看不到顶着一长串#include的代码了。
最后,有一个main函数。static void Main(string[] args){}。看来在C#中程序的入口还是Main函数。不过还是略微有些差别。
很重要的一点,是Main函数现在是属于某个具体类的函数,而不是全局函数了。C#中不存在任何全局变量或全局函数,Main函数也不能例外。不过有些聪明的同学会想到,既然Main函数成为了类的成员函数,一段程序里可以有多个类,岂不是可以有多个Main函数了?确实如此。你可以写很多个Main函数,不过在编译的时候,你可以指定某一个具体的Main函数才是真正的程序入口。

至于其他的么,我们再来对比一下。
void main(int argc,char *argv[])
static void Main(string[] args) 

Main函数变成静态函数了,而且M是大写的,参数也由原来的2个变成了一个。这些仔细想一下都很好理解。main函数是程序的入口,所以我们不可能先创建了某个类的实例,再调用实例的main函数。因此main函数理所应当是static的。至于大写,应该是摒除了原来C的遗留风格,保持C#命名规范的统一。原来的两个参数,第一个参数是用来说明第二个参数一共有多少个字符串,而现在用字符串数组作为参数完全可以自己来表明数组的个数。
 
这么看来C还是那个C,只是有一些需要大家去习惯的变化罢了。
posted @ 2010-07-04 16:13  桔红糕  阅读(226)  评论(0编辑  收藏  举报