写点什么

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

评论

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

浅谈堡垒机优化的必要性-行云管家

行云管家

云计算 网络安全 堡垒机 自动化运维

SpringBoot快速搭建、自动流程进阶、装配机制、功能扩展点详解

三十而立

Java 程序员 IT

为什么项目老夭折?这份项目管理指南请收好

得物技术

CosineWarmup理论与代码实战

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

内蒙古网络安全等级保护备案办理指引

行云管家

等保测评 等保备案 内蒙古

浪潮 KaiwuDB x 河工大 | 推进能源行业数字化转型建设

KaiwuDB

解决方案 数字能源 KaiwuDB

硬核!阿里出品2023版Java架构师面试指南,涵盖Java所有核心技能

Java你猿哥

Java 架构 后端 面经

面试滴滴、中信字节跳动等10+公司面经+面试题及答案分享(java岗)

三十而立

程序员标配Springboot!终于有人把SpringBoot讲的通俗易懂了

三十而立

Spring Boot 如何防护 XSS + SQL 注入攻击 ?终于懂了!

Java你猿哥

sql Spring Boot 后端 ssm XSS

阿里云发布「云盒+无影」云端机顶盒解决方案,打造云边端一体化的机顶盒新模式

云布道师

无影 云盒

打造炫酷时尚的 Neumorphism 设计!

编程的平行世界

flutter 前端 设计 flutter for web

OMG!Go语言设计模式,这样用简直不要太爽!

博文视点Broadview

复杂度分析:如何分析、统计算法的执行效率和资源消耗

京东科技开发者

数据结构和算法 算法和数据结构 复杂度分析 空间复杂度 企业号 3 月 PK 榜

扩散模型大杀器 ControlNet 解析

Openlab_cosmoplat

人工智能 开源社区 图像

从华为投入研发基础开发工具看国产IDE的未来和商业模式

科技怪授

精准测试之分布式调用链底层逻辑

京东科技开发者

分布式 精准测试 调用链 Spark 源码 企业号 3 月 PK 榜

阿里菜鸟国际Java研发面经(三面+总结):JVM+架构+MySQL+Redis等

三十而立

面试 java

深扒RocketMQ源码之后,我找出了RocketMQ消息重复消费的7种原因

程序员小毕

程序员 RocketMQ 后端 架构师 消息中间件

聊聊To B企业的客户成功价值

老张

交付 客户成功

无处不在的边缘网络感知

阿里云CloudImagine

云计算 边缘云 边缘网络

KaiwuDB 荣获第三届 ISIG 产业智能大会年度最佳技术创新奖

KaiwuDB

技术创新 KaiwuDB AIoT数据库

SpringCloud 整合Gateway服务网关

Java你猿哥

spring Spring Cloud Spring Boot ssm

Serverless Streaming:毫秒级流式大文件处理探秘

科技怪授

PaaS

技术领导力之路 - 安全感

阿里技术

技术成长

一个基于序列的弱监督视觉信息抽取学习框架

合合技术团队

人工智能 计算机视觉 OCR

喜马拉雅基于阿里云机器学习平台PAI-HybridBackend的深度学习模型训练优化实践

阿里云大数据AI技术

人工智能 深度学习 开源 gpu 企业号 3 月 PK 榜

企业研发治理转型利器华为云发布流水线服务CodeArts Pipeline

科技怪授

华为

阿里三面最后一问:解释一下Java并发AQS的独占锁模式

Java你猿哥

Java Java并发 AQS 后端 ssm

电脑风扇控制软件:Macs Fan Control Pro中文激活版

真大的脸盆

Mac Mac 软件 电脑风扇控制 风扇转速控制

真香!阿里最新出品Java面试核心讲(终极版),Github已星标50K

Java你猿哥

Java 后端 ssm 面经 八股文

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