发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

评论

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

vivo版本发布平台:带宽智能调控优化实践-平台产品系列03

vivo互联网技术

版本发布 CDN带宽

搞懂Druid之连接创建和销毁

小小怪下士

Java 程序员 后端 Druid

关于微服务架构的思考

HummerCloud

微服务 云原生

面试了20+前端大厂,整理出的面试题

loveX001

JavaScript

BeyondCampus-护航高校网络安全

权说安全

网络安全 零信任

unittest使用parameterized参数化后如何调用添加到测试套件中

Python 单元测试 自动化测试 unittest 测试套件

Percona 8.0.30中show engine innodb status导致coredump排查及分析

GreatSQL

MySQL MySQL 高可用 :MySQL 数据库 greatsql greatsql社区

「读源码」为什么注册路由时没有传入上下文,在接口方法中却能取到?

王中阳Go

Go golang 高效工作 学习方法 程序员

ChatGPT风口下的技术“狂飙”,天翼云荣登ZeroCLUE榜首

天翼云开发者社区

腾讯前端必会面试题(必备)

loveX001

JavaScript

面试官:限流算法有哪些?

王磊

java面试

ChatGPT入门案例|商务智能对话客服(三)| 社区征文

TiAmo

openai ChatGPT

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

飞桨PaddlePaddle

paddle 开源 飞桨

责任链和策略设计模式-基于Java编程语言

京东科技开发者

Java spring 代码规范 京东云 京东技术

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

程序员小毕

数据库 程序员 JVM 架构师 Java性能优化

瓴羊Quick BI即席分析工具:创设数据分析捷径

巷子

疑似45亿条递信息泄露,“三类主体”如何应对?

极盾科技

数据安全

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

Prompt Learning: ChatGPT也在用的NLP新范式

Baihai IDP

人工智能 自然语言处理 nlp ChatGPT 企业号 2 月 PK 榜

文盘Rust -- 本地库引发的依赖冲突

京东科技开发者

后端 Clickhouse 本地计算 rust语言 企业号 2 月 PK 榜

ModStartBlog v6.7.0 后台管理优化,页面宽度调整

ModStart

最初设计时就会避开钽电容,这是为什么呢?三大理由告诉你原因

元器件秋姐

元器件 电容 钽电容

有爱相伴,宠爱有家,皮皮App发起关爱流浪动物主题公益活动

联营汇聚

前端标准化之旅

京东科技开发者

前端 代码规范 京东云 京东技术

迷恋管理是一种病

虎妞先生

开学季,5门优选好课助你在新学期狂飙!

博文视点Broadview

擅用瓴羊Quick BI报表分析工具,数据分析事半功倍

夏日星河

瓴羊Quick BI为企业决策者提供可视化分析服务

小偏执o

Python设置显示屏分辨率

Python 分辨率

令人头秃的js隐式转换面试题,你能做对吗

loveX001

JavaScript

在统信UOS上二进制安装GreatSQL

GreatSQL

MySQL UOS 统信 greatsql greatsql社区

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