网络编程利器——C#

编程爱好者

大家好,我是寇豆,英文名Code。从这期开始为大家主持“暑期编程学习计划”。暑期又来了,学生们也都放假了吧。在今年的暑期中,大家除了旅游、休息之外,是否还想为自己“充充电”呢?从本期开始,我们就陆续为大家介绍目前最主流的编程开发工具软件,也将为大家推荐专业的学习书籍和网站。希望能加深大家对主流编程的了解,也对准备学习某种主流编程工具的朋友有所指导。我们将依次为大家介绍:C#、PYTHON、JSP、汇编、ASP.NET、PB等内容。

梁肇新:C#主要是目前主流的互联网应用编程语言,虽有其局限性,如在嵌入式应用开发方面不如C/C++,但在互联网应用编程方面却非常高效。有志于互联网应用软件开发的朋友可以直接从学习C#编程开始,如果你有C++或JAVA的编程基础,学习C#将更加容易。

C#简介

经过微软的不懈努力,.NET终于获得了广泛的认可,越来越多的软件转向了.NET平台,掀起了微软久盼的应用热潮。尽管微软对传统的开发工具C++、VB、ASP等作了大量改进,以适应.NET平台应用的开发,然而由于这些语言固有的特点,使它们很难完全与.NET融为一体,也不能尽显.NET的特色。在此背景下,微软吸收C++和Java的诸多优点,于2001年推出了为.NET量身定制的开发语言C#。

C#源自C/C++,但它对复杂的C++语言系统进行了简化,取消了多重继承、宏、“->”、“::”等语言特性,并对指针的使用作了严格限制。更重要地是,C#在类、命名空间、方法重载和异常处理等方面进行了重要改进,使它们更易使用和更加安全,强化了面向对象设计性能,使面向组件的编程更易进行。此外,由于同.NET平台紧密结合,C#能够利用.NET的所有特性,使它成为最强大的网络开发工具。

C#可以开发.NET平台上的所有类型的软件,不管是WEB程序,还是数据库程序,它都能够应付自如。但它只适用于.NET平台,也许这正是它具有独特价值的根本原因。

毫无疑问,为.NET而生的C#是目前所有开发语言中最符合.NET架构的,它正以自己无可比拟的魅力和不容争辩的地位赢得起来越多.NET软件开发人员的喜爱,成为当前最热门的开发语言。

对于希望学习.Net编程技术而又有一定C/C++编程基础的人,建议学习C#编程。

C#学习如何循序渐进

与C++相比,C#的学习要容易得多,因为C#已去掉了C++语言中许多让人挠头的东西,如指针、多种操作符、多重继承等,语法也更趋简洁,同时将容易出错的地方作了严格规定或改由语言自动完成,这方面深得Java的旨趣。此外,新的面向对象机制也使许多开发工作变得简单。因此对初学者而言,它的学习难度并不比VB大多少,如果对.NET架构有一定了解的话,那么将它作为学习编程的初始语言也未尝不可。而对C++和Java程序员来说,转向C#就更加容易,许多在C++和Java下积累的知识和经验可以完整地应用到C#中,一些C++.NET应用项目甚至不需要特别处理即可移植为C#应用项目。

目前主要的C#开发工具有微软的Visual Studio .Net 2003和Borland的C# Builder、Delphi 2005。Visual Studio .Net 2003的权威性自不待言,编译的质量也有目共睹,尤其是对.NET架构特性的支持近乎完美,因此许多重要的C#项目都是在Visual Studio .Net 2003中完成的。而C# Builder和Delphi 2005虽不如Visual Studio .Net 2003那样全面和权威,但继承了Borland开发工具的一贯特色,集成了众多控件,能够快速完成各种.NET应用软件的开发,与Visual Studio .Net 2003相比,各有所长。不过对C#初学者而言,C# Builder和Delphi 2005也许更适合。

C#编程示例

本示例实现显示本机机器名、IP和MAC的功能,是最基本的网络程序。通过它,大家可以窥斑知豹,了解C#的一些特点。

启动Visual Studio .Net 2003,新建C#的Windows应用项目。在资源管理器中,打开Form1表单,加入三个Label控件、三个TextBox控件(名为ComputerName、IpAdd、MacAdd)和两个Button控件,最后形成如图1所示界面。

25-g16-1-1.jpg
图1

再在“引用”项上点击右键,选择“添加引用”菜单,在弹出的对话框中找到“System.Management”项,将它添加到项目中,这样就可以在程序中使用System.Management命名空间了。在Form1.cs开始的using部分添加System.Management、System.Net和System

.Net.Sockets三项,其他的命名空间已自动生成。然后再为Button1的Click事件加入如下代码:

private void button1_Click_1(object sender, System.EventArgs e)

{ string s="",mac="";

//利用Dns组件的GetHostName函数读取机器名

string hostInfo=Dns.GetHostName();

//读取IP地址列表

System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;

for(int i=0;i

{ s+=addressList[i].ToString();}

//利用ManagementClass类取得MAC地址

ManagementClass mc;

mc=new ManagementClass("Win32_NetworkAdapterConfiguration");

ManagementObjectCollection moc=mc.GetInstances();

foreach(ManagementObject mo in moc)

{ if(mo["IPEnabled"].ToString()=="True")

mac=mo["MacAddress"].ToString();}

//在文本编辑框中显示数据

ComputerName.Text=hostInfo;

IpAdd.Text=s;

MacAdd.Text=mac;}

接着为Button2的Click事件加入以下代码:

private void button2_Click(object sender, System.EventArgs e)

{ //退出程序

Application.Exit(); }

以上代码比较简单,一看就懂,就不另作说明了。程序的运行结果如图2。

25-g16-1-2.jpg
图2

从示例可以看出,C#的语法简明清晰,类似Java,而且它比C++容易上手,在易学易用上类似VB。另外,.NET封装了丰富的系统资源,C#通过命名空间进行调用,大大简化了代码,降低了开发难度。大家不妨回顾一下C++完成以上功能的代码量,这样对.NET架构和C#的优越性就会有更深的印象。

C#学习资源

C#的学习资料当然数微软的最权威,但它的艰涩常令初学者望而却步。对大多数有志于.NET编程的朋友来说,也许一些C#开发专家写的书更为适合。这里向大家推荐三本。

《C#高级编程》第2版,清华大学出版社出版,定价128元。这是一本受到热烈推崇的书,许多程序员都是在它的引领下走进C#之门的,其权威性不容置疑。不过它也厚得可以,要啃完它并非易事,好在它的体例更像一本工具书,不必从头看到尾。它适合各个层次的C#程序员阅读和参考。

《Visaul C#高级编程范例》,清华大学出版社出版,定价46元。这是一本C#实战类书藉,涉及到许多方面,对已入门欲大展拳脚的朋友很有参考价值。

网上有关C#编程的站点非常多。不过有两个站点是非去看看不可的,它们是:www.msdn.com、www.csdn.net。此外,www.yesky.com、www.pcdog.com等上也有很多C#开发资源。