C#中提供的VB不支持的新特性

在Beta 2中,.NET中的两种旗舰语言——C#和Visual Basic各自的功能集合都已经确定。以前我们曾经介绍过只在VB中出现的特性,例如可变匿名类型和XML常量等。而今天本文则要介绍一些只在C#中出现的特性。

第一个特性是用于创建数据类的一个语法上的便捷之处。借助于自动属性(Automatic Properties)语法,C#开发者无需书写任何重复的代码即可容易地创建属性。

public int X { get; private set; }

上面这句代码创建了一个名为X的属性,该属性的getter是公有的,setter是私有的。在使用上述语法时,编译器将自动生成一个私有字段并与上述getter和setter关联起来。

虽然这样的自动属性语法看上去有些类似于公有字段,不过它却有着一些值得称道的优势。首先,很多内建的类型(比如列表和数据网格)只能绑定到属性上。从长远角度考虑,使用属性也能够让开发者在需要的时候为其添加更加复杂的逻辑,而同时却并不需要改变类型的公共接口。

另一个C#中的特性就是集合初始化器。

var mystrings = new List { "Alice", "Bob", "Charlie" };.

借助于类似数组初始化器的语法,上述代码将自动调用该集合的Add方法将达括号中的每一个条目添加到集合中。当然,这个特性并不能够应用于任何对象上,可使用该特性的对象应该提供一个Add方法,且该Add方法接受一个参数。

上面的这些示例程序均来自于Jomo Fisher的文章The Least You Need to Know about C# 3.0。

需要注意的是,关于闭包和lambada表达式等令人激动的特性,Visual Basic只能够支持单行的匿名方法。而C#则更为强大——借助于新的委托语法,C#将能够支持多行的匿名方法。

时间: 2024-11-05 21:52:08

C#中提供的VB不支持的新特性的相关文章

JavaScript中的Reflect对象详解(ES6新特性)_javascript技巧

Reflect介绍: Reflect这个对象在我的node(v4.4.3)中还没有实现, babel(6.7.7)也没有实现 ,新版本的chrome是支持的, ff比较早就支持Proxy和Reflect了,要让node支持Reflect可以安装harmony-reflect ; Reflect不是构造函数, 要使用的时候直接通过Reflect.method()调用, Reflect有的方法和Proxy差不多, 而且多数Reflect方法原生的Object已经重新实现了. 什么要使用Reflect

MySQL · 新特性分析 · 5.7中Derived table变形记

Derived table实际上是一种特殊的subquery,它位于SQL语句中FROM子句里面,可以看做是一个单独的表.MySQL5.7之前的处理都是对Derived table进行Materialize,生成一个临时表保存Derived table的结果,然后利用临时表来协助完成其他父查询的操作,比如JOIN等操作.MySQL5.7中对Derived table做了一个新特性.该特性允许将符合条件的Derived table中的子表与父查询的表合并进行直接JOIN.下面我们看一下DBT-3中

Socket类中提供的支持异步操作的方法

在网络编程中运用Socket,常常需要长期监听某个端口,以获得Socket连接,进而执行相关操作. 但此时,主线程就会被阻塞,无法做其他事情.为了解决这类问题,Socket类中提供了一些支持异步操作的方法,如表17-10所示. 表17-10 Socket类中支持异步操作的方法 方法 说明 BeginAccept() 开始一个异步请求,以创建一个新的Socket对象来接受传入的连接请求 EndAccept() 结束一个异步请求,以创建一个新的Socket对象来接受传入的连接请求 BeginConn

IIS 7.5 中提供的 Web 服务器 (IIS) 角色服务

Internet 信息服务 (IIS) 7.5 是 Windows 7 中的 Web 服务器 (IIS) 角色和 Windows Server 2008 R2 中的 Web 服务器.Web 服务器在 IIS 7 中经过重新设计,使您可以通过添加或删除模块对服务器进行自定义,从而满足您的特定需求.模块是服务器用于处理请求的独特功能.例如,IIS 使用身份验证模块对客户端凭据进行身份验证,并使用缓存模块来管理缓存活动. Windows Server 2008 R2 提供了在生产环境中支持 Web 内

手指之舞 – 探讨Silverlight中的多点触控支持

每次去纽约的美国自然历史博物馆,我必定会好好参观一下灵长类馆.灵长类馆选择了大量的骨骼和剥制标本,展示了一幅灵长类动物进化的全景,动物从极小的树鼩.狐猴和绒猴一直到黑猩猩.大猩猩和人类. 这个展览最引人注目的是所有灵长类动物都有着惊人的共性:手的骨骼结构相同,包括一个对生拇指.这种使我们的祖先和远亲可以抓握从而爬上树枝的相同关节排列和数目,让我们的物种可以影响周围的世界和从事建造工作.我们的双手可能源于数百万年前小型灵长类动物的爪子,而双手也是使我们真正成为人类的重要因素. 我们会本能地伸出手指

分析jQuery Mobile中实现多语言的支持以及优缺点

随着移动技术的普及,基于 jQuery 并且针对移动平台的 JavaScript 框架 jQuery Mobile 应运而生.jQuery Mobile 不仅承袭了 jQuery 的诸多优点,更为移动平台定制了许多皮肤和开发部件,大大减轻了开发人员的工作量.随着 HTML5 技术的日渐完善,加上 JavaScript 技术本身具有的跨平台特性,jQuery Mobile 或者类似的框架必然拥有更加广泛的市场,这从 Adobe 放弃移动 Flash 和 Microsoft 边缘化 SilverLi

《HTML5实战》——2.5 为不支持HTML5相关特性的浏览器提供回退方案

2.5 为不支持HTML5相关特性的浏览器提供回退方案 使用HTML5新特性的一个主要缺点就在于并不是所有浏览器都支持它们.所以你要照顾两个方面:那些最新.功能最强大的浏览器,以及稍微老旧一些的浏览器. 本节主要学习内容 对于HTML5特性,了解Modernizr是如何简化了对浏览器支持的侦测操作并加载回退方案的. 如何利用polyfill来弥补浏览器支持不足的状况,这是一个JavaScript回退方案,只有当所用浏览器缺乏原生支持时,该方案才起作用. 如何使用JavaScript对那些尚不能完

谷歌将在11月晚些时候停止为黑莓手机提供Gmail原生应用支持

摘要: 11月10日消息,据国外媒体报道,谷歌今日发布了一个生命终期声明.谷歌在该声明中表示,其将在11月晚些时候停止为黑莓手机提供Gmail原生应用支持. 谷歌表示,由于公司正集中精力 11月10日消息,据国外媒体报道,谷歌今日发布了一个"生命终期"声明.谷歌在该声明中表示,其将在11月晚些时候停止为黑莓手机提供Gmail原生应用支持. 谷歌表示,由于公司正集中精力为移动网络浏览器提供更强大的Gmail体验,这个"生命终期"声明将于11月22日正式生效.从11月2

OpenStack将提供对Docker的支持

最近来自Docker官方网站的文章提到,从OpenStack Icehouse开始,Docker将与Heat集成. 而最早在OpenStack Havana 版本中,Docker 已经作为 Nova driver方式与OpenStack集成.本文将首先简单介绍Docker,然后介绍其与OpenStack 的集成. Docker 简介 Docker 是一个开源的应用容器引擎,可以自动化地部署应用到可移植的的容器中,这些容器独立于硬件.语言.框架.打包系统.一个标准的Docker容器包含一个软件组件