C#的优点

由于.NET与以前的技术有着极大的差异,微软特意为.NET平台开发了一种新的编程语言--C#(读做"C Sharp")。C#的核心语法和Java的语法很相似。然而,并不能说C#抄袭了Java。C#和Java都属于C语言系列(包括C、Objective C、C++等),它们有类似的语法。正如Java在许多方面是C++的提炼版一样,C#也可以视为Java的提炼版。

实际上,C#的许多语法结构与VB 6.0和C++的很多方面都有渊源。例如,与VB6类似,C#支持正式的类型属性(property) 的概念(与传统的获取方法和设置方法相反),且支持方法带有不定数目的参数(使用参数数组)。与C++类似,C#允许重载运算符,且支持创建结构、枚举和回调函数(使用委托)。

说明 在第13章中我们会看到,C# 3.0引入了各种函数式语言(如LISP或Haskell)中的很多结构。此外,由于LINQ的出现(见第14章和第24章),C#支持很多编程结构,在编程语言中显得非常独特。尽管如此,C#的核心始终受到C系列语言的影响。

C#是多种语言的混合体,因此它像Java一样语法简洁,像VB6一样使用简单,像C++一样功能强大和灵活(C#没有像C++那样麻烦的位操作)。以下是C#核心特征的一部分,其中大部分特点也是其他支持.NET的程序语言所共有的特征。

不需要指针!C#程序通常不需要直接对指针进行操作(尽管在绝对必要时也能自由地进行底层操作)。

垃圾收集器能够自动管理内存。因此,C#不支持delete关键字。

类、接口枚举、结构和委托都有正式的语法结构。

具有与C++类似的功能,可以简单地重载运算符为自定义类型(例如,不需要操心确保"返回*this以能够链接")。

支持基于特性的编程。这种方式的开发允许我们注释类型及其成员来进一步限定其行为。

随着.NET 2.0的发布(大约在2005年),C#编程语言得到了更新以支持很多花哨的东西,主要是以下几项。

构建泛型类型和泛型成员的能力。使用泛型,我们可以构建非常高效的并且类型安全的代码,在和泛型项交互的时候可以定义很多"占位符"。

支持匿名方法,它允许我们在任何需要委托类型的地方提供内联函数。

很多委托/事件模型的简化,包括协变、逆变以及方法组转换。

使用partial关键字跨多个代码文件定义单个类型的能力(或者如果有必要的话,可以作为内存中的表示)。

你也可能猜到了,.NET 3.5为C#编程语言(更确切地说是C# 3.0)增加了更多功能,包括如下特性。

支持强类型的查询(就像LINQ,即集成查询语言),可用于和各种形式的数据进行交互。

支持匿名类型,它允许我们建模一个类型的"形"(shape)而不是其行为。

使用扩展方法扩展既有类型功能的能力。

包含了Lambda运算符(=>),它可以进一步简化.NET委托类型的使用。

新的对象初始化语法,它允许我们在对象创建时设置属性的值。

关于C#语言,要理解的最重要的一点可能是,它生成的代码只能在.NET运行库中执行(你不能用C#来构建本机的COM服务器或非托管的Win32 API应用程序)。正式的说法是,这种必须在.NET运行库下执行的代码称为托管代码(managed code)。这些包含托管代码的二进制单元可以称为程序集(assembly)(程序集的详情稍后在1.5节中再讲)。反之,不能直接在.NET运行库承载(host) 的代码称为非托管代码(unmanaged code)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值