2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论

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

TikTok直播专线是什么?有什么用?

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 海外直播网络

分享一些大数据处理算法

Chris Zhang

大数据

更轻松地部署和升级 NGINX Service Mesh

NGINX开源社区

nginx Kubernetes Helm Service Mesh 服务网格 mTLS

软件测试学习笔记丨Allure2 报告中添加附件(视频)

测试人

软件测试

互联网公司裁员现象调查:探寻背后原因与应对策略

小魏写代码

利用Shell二次封装Elasticsearch客户端:简化数据检索与操作

测吧(北京)科技有限公司

测试

中国 10 亿参数规模以上大模型数量已超 100 个;GitHub 推出代码自动修复工具丨 RTE 开发者日报 Vol.172

声网

深入了解一下http和https的区别

秃头小帅oi

解锁TikTok直播专线,提高使用体验

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 tiktok直播网络

云端简易指南:快速启动与管理您的ECS实例

极客天地

码上时刻|通过逻辑视图 Logic View 快速实现批流一体

Kyligence

自定义Elasticsearch索引模式:优化数据存储结构以提高检索效率

测吧(北京)科技有限公司

测试

数字化工厂MES/MOM一体化解决方案PPT

工赋开发者社区

深度解析代码变更对业务的影响范围:业务影响范围关联分析

测吧(北京)科技有限公司

测试

JVM字节码分析与修改:探索代码覆盖率底层实现框架

测吧(北京)科技有限公司

测试

利用Elasticsearch进行文本数据的深度分析

测吧(北京)科技有限公司

测试

AlphaGPT在法律大模型圈子火了,案件仅需3分钟搞定

科技汇

新版Redis不再“开源”,对使用者都有哪些影响?

华为云开发者联盟

数据库 redis 华为云 华为云开发者联盟 华为云GeminiDB

比 MyBatis 效率快 100 倍...

Java技术精选

ECS公网连接指南:精明选择公网IP计费策略

极客天地

深入理解精准测试理论与技术:揭秘测试技术的核心原理

测吧(北京)科技有限公司

测试

TikTok直播专线:解决出海网络问题痛点,提升商业效率

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 tiktok直播网络

敏捷开发:想要快速交付就必须舍弃产品质量?

敏捷开发

项目管理 Scrum 敏捷开发 产品研发 研发

大模型+医疗,优质数据助力新生态建立

澳鹏Appen

数据标注 大模型 医疗大模型

OLAP性能再获突破!火山引擎ByteHouse性能白皮书发布

极客天地

实战代码静态分析工具:利用语法树数据工具提升代码质量

测吧(北京)科技有限公司

测试

数据可视化与分析:利用Kibana展现数据的视觉化洞见

测吧(北京)科技有限公司

测试

阿里云实时计算Flink的产品化思考与实践【上】

Apache Flink

大数据 flink 实时计算

代码覆盖率提升策略:利用静态分析工具优化测试覆盖率

测吧(北京)科技有限公司

测试

搭建Elasticsearch、Kibana和Logstash环境:构建强大的数据分析平台

测吧(北京)科技有限公司

测试

RocketMQ 流数据库解析:如何实现一体化流处理?

阿里巴巴云原生

阿里云 RocketMQ 云原生

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