写点什么

C#和 VB.NET 获得 Windows Runtime 支持和异步方法

  • 2011-09-26
  • 本文字数:1228 字

    阅读完需:约 4 分钟

C#和 VB.NET 将会获得新特性,比如说,Windows Runtime 支持、异步方法和 Caller Info 特性等等。另外,编译器也会获得一些 API,把它对代码的了解暴露给 IDE 和开发者。

微软的 Anders Hejlsberg 在微软 BUILD 大会上演示了C# 5.0 和VB.NET 的新特性。 Samuel Jack 在他的博文《What’s new in C# 5.0 and VB.NET?》里给出了详细的列表。下面是新特性的摘要:

  • Windows Runtime 支持:C#和 VB.NET 现在已经深度整合到 Windows Runtime 了——C#项目可以编译成 WinMD 文件,然后在 HTML/JavaScript 项目里引用。InfoQ 之前已经

    详细报道过这个特性了。

  • 异步方法:使用 async 和 await 关键字写异步任务更加简单,这在去年 PDC 首次演示,然后再

    Async CTP 提供预览。

    这些文章深入地

    探索了这个特性。

  • Caller Info 特性:新的 CallerFilePath、CallerLineNumber 和 CallerMemberName 特性可以在可选方法参数上使用,协助获取调用方的详细信息,但不必从调用方法传递进来。

  • 编译器 API:这个特性应该在 C# 5.0 之后出来。这些 API 将会通过语法树 API、符号 API、绑定和流程分析 API 以及 Emit API 向 IDE 和开发者暴露编译器对代码的了解。你可以在这个

    Microsoft Research 的视频获得详细信息。

这些新特性可以使.NET 开发者的工作变得更加简单。比如说,下面这是实现属性更改通知的一个典型模式:

public class Customer : INotifyPropertyChanged

{

public event PropertyChangedEventHandler PropertyChanged;

private string _firstName;

public string FirstName

{

get { return _firstName; }

set { Set(ref _firstName, value, “FirstName”); }

}

private void Set(ref T field, T value, string memberName)

{

if (!object.Equals(field, value))

{

field = value;

if (PropertyChanged != null)

PropertyChanged(this, new PropertyChangedEventArgs(memberName));

}

}

}

这个模式的问题在于很容易把代码搞乱。如果你在 set 访问器里拼错属性的名字,或者你重命名了属性,那么它会悄然失效。

使用新的类似宏的特性可以避免这种失效:

public class Customer : INotifyPropertyChanged

{

public event PropertyChangedEventHandler PropertyChanged;

private string _firstName;

public string FirstName

{

get { return _firstName; }

set { Set(ref _firstName, value); }

}

private void Set(ref T field, T value,[CallerMemberName] string memberName = null)

{

if (!object.Equals(field, value))

{

field = value;

if (PropertyChanged != null)

PropertyChanged(this, new PropertyChangedEventArgs(memberName));

}

}

}

类似的,异步编程将会变得更简洁,也会变得更常用,触摸界面将会要求大多数方法都是异步的。Silverlight 开发者将会对此感到欣慰。另外,就像 Anders 演示的“Paste as VB”和“Paste as C#”,编译器 API 将会为.NET 工具开发商带来更多的可能性。有趣的时刻马上就到了!

查看英文原文: C#, VB.NET To Get Windows Runtime Support, Asynchronous Methods

2011-09-26 19:091823

评论

发布
暂无评论
发现更多内容

云图说|DDS读写两步走,带您领略只读节点的风采

华为云开发者联盟

数据库 华为云 读写分离 DDS

手把手,带你用数据做好迭代复盘改进 | 敏捷开发落地指南

阿里云云效

阿里云 敏捷开发 研发 迭代管理 项目协作

加速虚拟与现实交互,2022视觉计算私享会邀请你一起沉浸体验

阿里云弹性计算

vr 虚拟现实 元宇宙 视觉计算

OpenHarmony布道师招募正式启动,打造个人技术影响力的机会来了!

科技汇

连续3年实力登榜!EMQ映云科技再度跻身“2022中国边缘计算企业20强”

EMQ映云科技

物联网 IoT 边缘计算 emq 5月月更

WordPress 固定链接设置

海拥(haiyong.site)

5月月更

2022开源之夏 | 龙蜥社区@你,快来报名

OpenAnolis小助手

开源软件 龙蜥社区 开源之夏 供应链点亮计划 学生开发者

Connection reset

领创集团Advance Intelligence Group

Connection reset

【Linux深潜】详解Linux系统自身安全调优配置

沃趣科技

Linux

node爬虫爬取小说章节

空城机

爬虫 Node 5月月更

做本让客户念念不忘的产品手册

小炮

产品手册

一名优秀的算法工程师,日常都做些什么呢?

非凸科技

招聘 社招 校园招聘

CWE 4.7中的新视图:工业控制系统的安全漏洞类别

华为云开发者联盟

安全漏洞 cwe 软件安全 CWE 4.7 工业控制系统

如何写出GC更优的代码,以达到提升代码性能的目的

非凸科技

性能 编程语言 垃圾回收 GC 吞吐率

一个无经验的大学毕业生,可以转行做软件测试吗?我的真实案例

伤心的辣条

Python 程序人生 软件测试 自动化测试 测试 单元测试

大咖说 X 智篆商业|未来五年:消费增长的“两大来源”与“四个方面”

大咖说

阿里云 存量时代 智篆商业

墨天轮访谈 | 百度云邱学达:GaiaDB如何解决云上场景的业务需求?

墨天轮

数据库 百度云 国产数据库

豆瓣评分8.5,详细讲解Python基础知识和应用的百科全书来了!

图灵教育

Python 程序员 计算机

跟我学Python图像处理丨掌握4种图像平滑算法

华为云开发者联盟

Python OpenCV 图像属性 兴趣ROI区域 图像通道

OpenHarmony兼容性平台更新上线

OpenHarmony开发者

OpenHarmony 兼容性平台

融云参编,业界首个办公即时通信软件安全标准重磅发布!

融云 RongCloud

主流开源分布式图计算框架 Benchmark

NebulaGraph

图计算 分布式图数据库

架构实战营 第 6 期 模块五课后作业

火钳刘明

架构实战营 「架构实战营」

网络协议之:memcached text protocol详解

程序那些事

Java Netty 网络协议 程序那些事 5月月更

还有谁不知道CRM系统可以为企业做这些?

低代码小观

CRM 客户关系管理 CRM系统 客户关系管理系统 企业管理软件

国内外最顶级的12大看板工具

爱吃小舅的鱼

黎明前的至暗时刻,旅企是该坚守还是放弃?

易观分析

旅游业

易周金融观点 | 支付机构入局数字藏品;Q1手机银行交易超150万亿

易观分析

金融

百问百答第37期:如何一次性贯穿前后请求,调用链告诉你答案

博睿数据

调用链 博睿数据 IT运维

RGB色彩空间

Loken

音视频 5月月更

OpenHarmony 3GPP协议开发深度剖析——一文读懂RIL

OpenHarmony开发者

OpenHarmony RIL

C#和VB.NET获得Windows Runtime支持和异步方法_.NET_Roopesh Shenoy_InfoQ精选文章