写点什么

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

评论

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

AI练中学,你的 AI 助教又升级啦!

TRAE.ai

浅谈混合云的特点及管理

天翼云开发者社区

云计算 私有云 混合云

和鲸社区数据科学实训季,西安交通大学圆满收官,西安,后会有期!

ModelWhale

Python 人工智能 数据科学 实训 和鲸社区

一文搞懂SaaS应用架构:应用服务、应用结构、应用交互设计

不在线第一只蜗牛

架构 SaaS

软件测试学习笔记丨Selenium浏览器的操作者driver

测试人

软件测试

拼多多商品详情数据接口:技术员的探索与实践

tbapi

拼多多API接口 拼多多商品详情数据接口 拼多多商品数据采集 拼多多商品详情API

阿里巴巴商品详情API返回值中的促销与优惠信息

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

NFT区块游戏系统开发: 构建与创新指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

质押挖矿系统开发搭建: 数字资产增值的秘密武器

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 代币开发

一文详解 MySQL 中的间隙锁

emanjusaka

MySQL gap lock

11月23-24日“企业级敏捷教练课程”—— CSP-SM认证培训开班啦!

ShineScrum

广东传媒行业先锋沙龙:携手华为云,共谋数智媒体发展大格局

极客天地

鸿蒙网络编程系列26-HTTPS证书自选CA校验示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报

声网

在研发度量中,如何为非技术型领导提供信息?

思码逸研发效能

DevOps 研发效能 研发效能度量 研发效能管理

为什么mac打不开rar文件 苹果电脑打不开rar压缩文件怎么办

阿拉灯神丁

压缩工具 解压软件 苹果电脑解压缩 压缩和解压缩工具 BetterZip 5下载

重磅!望繁信科技与德勤中国签署战略合作协议

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 数字北极星

ETLCloud+Doris组合:数据集成,更简单更高效

谷云科技RestCloud

数据库 Doris ETL 数据集成

应对复杂架构下的监控挑战?统一运维可观测能力是关键!

袋鼠云数栈

云计算 可观测性

海量大模型如何一键部署上云?函数计算 x ModelScope 社区给出答案

阿里巴巴云原生

阿里云 云原生 函数计算

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