作者:shinoy
时间:2011/12/01 版权所有,侵权必究。出处:http://blog.csdn.net/snowshinoy
本节示例代码下载: 示例代码
.NET是微软继COM技术后推出的新一代开发平台。不同于COM,这次微软推出.NET平台的目的,是希望减轻开发人员的开发难度,并提高开发效率。所以,在.NET中,我们会发现有非常强大的类库支持以及新功能的引入。.NET较多的借鉴了JAVA的理念和技术,学习过JAVA的朋友会觉得很多概念似曾相识。本专题的目的就是带领大家逐步掌握.NET下编程的技术。
.NET不同于以往的windows开发平台,他是基于一个称为CLR(common language runtim)的虚拟机组件支持的平台。所有使用.NET语言编写的程序,在编译后都形成CIL(Common Intermediate Language) Code 。在运行时,CLR将CIL Code转换成Natvie Code运行。过程如下图:
通过这种方式,.NET实现了语言无关性以及反射等高级技术,在以后我们会感受到他的好处。
.NET支持了多种语言,使用最为广泛的就是C#(读作c sharp)。这是一种语法类似C++的新语言,并且是一个完全面向对象语言(C++可以写非面向对象)。就目前而言,我们如何理解完全面向对象呢?可以不很准确的通过C#的一个特点理解一下,就是所有东西都定于在类定义中,甚至包括Main函数。也就是说,在C#编程中的第一个事情,一定是先定义一个类。下面我们看一个例子:
class Program
{
static void Main(string[] args)
{
}
}
不管你信不信,这个已经是一个可以运行的C#程序了,在你的Visual Studio中敲入它,运行下试试。这个例子中,我们只有一个Main函数,说到它,有点编程经验的都应该不陌生,这是整个程序的入口,也就是说,程序是从这个函数开始进入运行的。在C和C++中,这个Main可是裸奔的,而在C#中,所有的东西都必须放入类定义中(关于什么是类和对象,可以参看我的另外一篇文章,里面有清楚描述 【Nunit入门系列讲座 4】NUnit断言- 对象识别断言)。这个例子里我们将Main放入了一个叫Program的类定义中。
说到这里,有些想的比较深入的朋友可能有疑问,你可以随便定义类名么?不怕重复么?确实,类名重复就会出错。如果这个程序是同一个人写的,这点比较容易避免。但是大多数时候,程序是由多个人完成的,甚至不同程序互相调用的时候,类名也不能混淆。这就是命名空间派上用场的时候了。我们可以把命名空间想象成类名的前缀,通过不同的前缀,我们可以轻松的类名相同的类区分开来。这点和通过城市,街名的组合来唯一确定地址类似。
我们为了防止别人也给自己的类起名为Program(这倒是很容易,因为VS默认类名就是这个),我们来加一个叫做My的命名空间,通过namespace关键字可以定义命名空间,包裹在namespace的括号中的所有类,都是属于My这个名字空间的。
namespace My
{
class Program
{
static void Main(string[] args)
{
}
}
}
现在我们再定义一个同名的类,位于另外一个名字空间Your中,并且在另外一个地方使用他们,看下会发生什么。
using System;
using System.IO;
namespace My
{
class Program
{
public static int Member = 0;
}
}
namespace Your
{
class Program
{
public static int Member = 1;
}
}
class Test
{
static void Main(string[] args)
{
Console.WriteLine(My.Program.Member);
Console.WriteLine(Your.Program.Member);
}
}
从上例可知,我们通过命名空间,成功的调用了两个同名类的同名属性,而没有混淆。命名空间就是通过有意义的名字,将不同的类组织在不同逻辑集合中。.NET的类库中也广泛使用了这种方式来管理,不然成千上万个系统类,我们查找都会非常费时。
其实在上节,我们已经完整的实现了一个C#程序。通过例子我们可以知道一个C#的程序组成很简单,一个类定义,一个Main入口(在类定义中)就可以。下面让我们也俗套一次,实现一个C# 版本的Hello World吧。给程序加上命名空间、调用系统库的引用(类似c中的include),形成如下的代码:
using System;
using System.IO;
namespace My
{
class Program
{
public static int Member = 0;
}
}
namespace Your
{
class Program
{
public static int Member = 1;
}
}
namespace TestNS
{
class Test
{
static void Main(string[] args)
{
Console.WriteLine(My.Program.Member);
Console.WriteLine(Your.Program.Member);
Console.WriteLine("Hello World!");
}
}
}
到此,我们初步学习了.NET平台下使用C#编程,后面我们将会逐步学习,接触更多让我们心动的特性。还是那句老话,如果觉得不错,请继续关注本系列课程,如果对课程有不理解的问题,可以发邮件给我[email protected],谢谢。
白盒测试QQ交流群:
Rss订阅IQuickTest(关于如何订阅?)
GoogleReader订阅地址: http://feeds.feedburner.com/iquicktest