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

评论

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

对话声网 Agora 首席科学家钟声 :5G时代到来前景下RTE实时互动技术的应用与发展

麦洛

Java

访谈阿里巴巴安全科学家吴翰清

容光

专访 阿里吴翰清 最新网络安全

领域驱动设计 101- 上下文与持续集成

luojiahu

领域驱动设计 DDD

【提纲】专访融云 CTO 杨攀 | 物联网城池应用和发展

李孟聊AI

调查采访能力考核

《采访彩食鲜 CTO 乔新亮:IT 团队从 100 到 10000 的管理心得》(采访提纲)

程序员历小冰

调查采访能力考核

专家呼吁:保护肾脏,从关注酸性尿开始

E科讯

模块2的作业

谢博琛

精通比特币:为什么它对自由、财务和未来至关重要(上篇)

CECBC

比特币

ARTS- Week 7

steve_lee

专访声网首席科学家钟声|倾听不一样的“钟声”,声网实时互动服务

程序员架构进阶

28天写作 4月日更 调查采访能力考核 人物访谈

玩一玩Tiktok

箭上有毒

4月日更

Lombok初始使用及遇到的问题

风翱

lombok 4月日更

在gitee码云上搭建一个网站

空城机

JavaScript 大前端 gitee 4月日更 搭建网页

Go Goroutine

escray

学习 极客时间 Go 语言 4月日更

如何从零开始学Python:(3)划重点:使用IDLE创建列表时需要注意的地方

广之巅

Python 4月日更

对话声网 Agora 首席科学家钟声 :声网的未来规划和人才建议

小诚信驿站

采访 调查采访能力考核

朱嘉明:算力产业正面临着一个十年的长周期

CECBC

数字经济

关于数字人民币、加密货币,央行前行长周小川、副行长李波博鳌论坛发声

CECBC

数字货币

python 变量作用域和列表

若尘

变量 Python编程 作用域

MySQL 死锁套路:再来看一例走不同索引更新的例子

AI乔治

Java MySQL 架构

由 JVM Attach API 看跨进程通信中的信号和 Unix 域套接字

AI乔治

Java 架构 JVM 性能调优

混沌工程=可观测性+探索性测试?

混沌工程实践

云原生 可观测性 混沌工程 测试右移 探索性测试

为什么微服务一定要有 API 网关?

xcbeyond

微服务 api 网关 4月日更

Ansible 介绍

耳东@Erdong

4月日更

TikTok安装

箭上有毒

4月日更

浪潮云洲链全面接入“星火·链网”

工业互联网

【AI全栈二】视频流多目标多类别无延迟高精度高召回目标追踪

cv君

音视频 目标检测 视频跟踪 引航计划

ElasticSearch 如何使用 TDigest 算法计算亿级数据的百分位数?

程序员历小冰

大数据 elasticsearch 近似算法 TDgigest

1W字|40 图|硬核 ES 实战

悟空聊架构

全文检索 elasticsearch elastic springboot 实战

LeetCode题解:145. 二叉树的后序遍历,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

【提纲】专访融云CTO杨攀 | 技术型人才的自我修炼

Python研究所

调查采访能力考核

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