Visual C
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 C#语言概述

Visual C#是由微软公司开发的一种完全面向对象的程序设计语言,是微软.NET软件开发平台下最重要的组成部分之一。本节将带领读者学习C#语言特点,介绍C#和其他语言之间的区别,以及C#语言3.0的一些新特性。

1.1.1 C#语言的特点

C#语言作为一门新兴的语言,融入了C、C++、Java等语言的优点,并结合微软公司Visual系列开发语言的简单操作性,使其迅速流行,深受很多程序开发人员喜爱。作为.NET框架下的主要语言,C#语言具有以下特点。

● 简洁的语法:C#是由C、C++发展而来的,所以三者在语法风格上基本上一致,与C、C++相比,C#的语法简单易懂。

● 完全的面向对象设计:C#语言拥有面向对象语言所具有的所有特性:封装、继承、多态,而且C#是完全面向对象的程序设计语言。

● 与Web的紧密结合:现有的一些开发语言不能与Web紧密结合,但C#语言解决了这一难题。XML是网络中结构化数据传输送的标准,C#语言提供了对XML的良好支持,开发人员能够方便地开发XML Web Service,有效地处理网络中的各种数据。

● 消除程序错误:程序中任何一个小的错误,就可能酿成难以预料的后果。.NET Framework为使用C#语言编写的应用程序提供了安全性保障和错误处理机制。C#利用.NET Framework提供的垃圾回收器有效减轻了内存管理的负担。

● 版本处理技术:在程序的开发中,几乎所有的程序员都碰到过“DLL地狱”问题,该问题是因为安装了相同名字的不同版本DLL文件造成的。但C#中版本处理技术可以最好地解决这个问题,其内置的版本控制功能,为程序员保证版本控制成为可能。

● 灵活性:虽然C#大量简化了语法,但并没有失去灵活性。由于其灵活性,使得C#可以与C、C++语言中需要传递参数的API进行交互操作。

1.1.2 C#与其他语言

微软公司是这样描述C#的:C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。C#语言继承了C、C++语言系列的强大功能和灵活性,以前从事C或C++等语言开发的编程人员会很快适应该语言。为了简化难度,C#语言不提倡使用指针,如果使用指针,必须将代码声明为不安全代码。这一点和C、C++语言不同。

C#要求在引用变量值前,必须先声明该变量,并且进行初始化。C#是完全面向对象的语言(C++是基于对象的语言),不再使用全局方法。如果只有一个静态成员,那么程序中的每个方法都必须是类的一个成员。例如在C++中,程序的入口Main方法是不属于任何类的,不过在C#中这样是不可以的,该方法也是类中的成员方法。

另外,C#做到了像Visual Basic语言一样可以进行可视化操作,支持使用Windows快速开发的图形化用户界面,用户不必编写代码来处理Click等事件。

毫无疑问,Java对C#有着深刻的影响。C#是在Java之后开发的,融入了Java的优点。在语法上,C#要比Java强大。例如,在C#中还可以在不安全代码中使用指针,这一点是Java所不具备的。

1.1.3 C# 3.0新增功能

在C# 3.0中添加了新的语法特性,其所有变化都是由新的编译器来完成的。使用新语法可以使程序更加简洁,描述力更强,并且这些新增特性为语言集成查询——LINQ提供了帮助。下面是新增的C# 3.0语言功能,如表1-1所示。

表1-1 新增的C# 3.0语言功能

下面用新增的自动属性进行改写在.NET 2.0中常用的属性。封装是面向对象的一大特性,程序员经常需要将一些私有变量的访问限制在类的内部,而对于外部的访问需要通过访问器来实现。而在C#中,就可以通过属性(Property)来实现这一功能,以下为属性的声明,代码如下所示。

          public class Person                //自定义一个Person类,包含一个私用字段和公有属性
          {
              private int_name;             //类内部字段
              public int Name              //对外开放的属性
              {
                  get                    //读取属性
                  {
                      return _name;
                  }
                  set                    //设置属性
                  {
                      _name = value;
                  }
              }
          }

在C# 3.0中,自动属性(Auto Property)可以简化上面的代码。开发人员不需要再定义私有字段并且书写完整的属性读写器,只需定义属性的名称和访问修饰符即可,代码如下所示。

          public class PersonUseAutoProperty   //定义PersonUseAutoProperty类,包括一个自动属性
          {
              public string Name{set;get;}    //自动属性
          }

C# 3.0提供了一些新特性,使得开发者可以更轻松地完成一个程序员和架构设计师的工作,同时保持了程序语言的严谨和清晰的结构。

作者心得:

C#语言的年轻不仅是因为出生时间不长,更重要的是不断推出新特性,不断吸取其他语言的优点进行完善。而这些新特性的出现很大程度上减轻了程序员的工作量,提高了程序的质量,例如本书第15章介绍的LINQ。