阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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:092017

评论

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

ServiceWorker工作机制与生命周期:资源缓存与协作通信处理

zhoulujun

Service Worker

Kong-如何查看 Kong 插件的版本

耳东@Erdong

kong 7月日更 kong-plugin

EF Core 数据验证

喵叔

7月日更

公开吧!腾讯技术专家手撸“Redis技术笔记”,下载量已突破30W

redis 编程 架构 面试

分布式认知工业互联网赋能工业企业数字化转型

CECBC

颠覆式创新:更便宜、更简单

石云升

创业 创新 7月日更

模块七作业(王者荣耀商城异地多活架构设计)

Chris Cheng

架构训练营

web messaging与Woker分类:漫谈postMessage跨线程跨页面通信

zhoulujun

Service Worker

架构实战营 模块七作业

eoeoeo

架构实战营

不懂Java SPI机制,怎么进大厂

慕枫技术笔记

Java 后端 spi

Go 学习笔记之 赋值

架构精进之路

Go 语言 7月日更

妇与术(一):女性体育报道,技术or花瓶?

脑极体

第七章作业

方堃

Linux之whereis命令

入门小站

Linux

北鲲云探索云计算在生命科学领域更多的应用场景

北鲲云

慕了没?3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer

Java架构师迁哥

王者荣耀异地多活架构设计

Lane

网络安全2021年为什么如此吃香?事实原来是这样....

网络安全学海

运维 网络安全 信息安全 渗透测试 漏洞分析

呃!原来如此!

Nydia

模块7学习总结

TH

架构实战营

Git点赞82K!阿里量产的保姆级Spring Security笔记,一眼望穿干货满满!

Java 编程 架构 面试

模块7作业 王者荣耀商城异地多活架构设计

TH

架构实战营

模块一作业

VE

架构实战营

Token Pocket钱包DAPP系统开发

Geek_23f0c3

区块链 dapp DAPP系统开发 token pocket

模块8作业

Geek_2e7dd7

#架构实战营

IPFS矿机怎么挖矿IPFS矿机工作原理

数字科技这类人才是银行急需的

CECBC

推荐系统产品概述(二十五)

Databri_AI

算法 推荐系统 流量

在线2-36任意进制转换工具

入门小站

工具

网络攻防学习笔记 Day64

穿过生命散发芬芳

网络攻防 7月日更

一站到底!Spring Cloud Alibaba第三版耀世升级全彩PDF版

Java架构师迁哥

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