写点什么

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

评论

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

实用机器学习笔记八:特征工程

打工人!

机器学习 算法 学习笔记 12月日更

React与Vue、Angular 三个方面的比较

devpoint

Vue angular React 12月日更

作业

AUV

「架构实战营」

电商系统微服务架构

AHUI

「架构实战营」

前端异常监控系统Sentry的基本使用

码上生长

Vue sentry

Week1学习总结

guodongq

「架构实战营」

架构实战 模块一作业

mj4ever

架构实战营

架构实战模块1作业

青青子衿

架构实战营-模块1-作业

CH

架构实战营

威廉古堡:用宜搭个性化定制企业应用,提升5倍运营效率

一只大光圈

钉钉 低代码 数字化 钉钉宜搭

在线SQL(Insert/Update)语句转JSON工具

入门小站

工具

学习总结 2021.12.09

mj4ever

总结

【架构实战营】模块一:命题作业

wgl

「架构实战营」

为什么private方法加了@Transactional,事务也没有生效?

JavaEdge

12月日更

报表功能升级|宜搭新增的这4项图表组件太好用了吧

一只大光圈

钉钉 低代码 数字化 钉钉宜搭

架构实战营模块一作业

lchx08

「架构实战营」

Homework01

王欣欣

「架构实战营」

模块一作业

whoami

「架构实战营」

盘点JavaScript运行机制:简单类型和复杂类型

你好bk

JavaScript 大前端 字符串 作用域 12月日更

你了解集合?那你倒是给我说说啊!【2】

XiaoLin_Java

12月日更

Gbase8a学习笔记-学习环境安装

南渡北归

数据库 gbase8a

钉钉宜搭培训进企业,国潮品牌掀起低代码学习热潮

一只大光圈

阿里巴巴 钉钉 低代码 数字化 钉钉宜搭

架构实战营模块一作业

Poplar

「架构实战营」

Helm 介绍

xcbeyond

Helm 28天写作 12月日更

微信业务架构图

DENG.S

透过全球首个知识增强千亿大模型,看到中国AI差异化发展之路

脑极体

面试吹牛B,入职就倒霉了

喵叔

28天写作 12月日更

故事:“麻省理工已失控”,他的网站被黑了

喀拉峻

网络安全

39 K8S之Flannel网络插件

穿过生命散发芬芳

k8s 28天写作 12月日更

【架构实战营】模块一:知识点总结

wgl

「架构实战营」

聊聊 Kafka:编译 Kafka 源码并搭建源码环境

老周聊架构

签约计划第二季

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