【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

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

评论

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

版本不兼容Jar包冲突该如何是好?

vivo互联网技术

jar Java 开发

10个Node.js 开发人员必须使用的IDE

编程江湖

node.js

Soul运维总监尤首智:企业如何从0到1建设云上运维体系

阿里云弹性计算

阿里云 云上架构 运维峰会

kafka丢失和重复消费数据

编程江湖

大数据 kafka

Linux之find命令

入门小站

Linux

OPPO小布助手算法系统探索、实践与思考

安第斯智能云

算法

PingCAP x 亚马逊云科技,为 TiDB 云端体验“加冕”

PingCAP

教你Python字符串的基本操作:拆分和连接

华为云开发者联盟

Python 连接 字符串 拆分 拆分字符串

大数据开发Hive之如何进行数据抽样

@零度

大数据 hive

技术揭秘!百度搜索中台低代码的探索与实践

百度Geek说

中台 后端 低代码 搜索

Arctic:网易数帆开放式流批一体表服务 | BDTC 精彩回顾

网易数帆

大数据 数据湖 iceberg 流批一体 Arctic

带你熟悉鸿蒙轻内核Kconfig使用指南

华为云开发者联盟

Python 鸿蒙 LiteOS-M Kconfig kconfiglib

一文带你了解数据库连接池的必要性

编程江湖

数据库 JAVA开发

确保关键基础设施精确授时与同步的弹性、冗余和安全性

科技热闻

前端开发SpringBoot之接口文档的生成

@零度

前端开发 springboot

SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子

Jerry Wang

Kubernetes k8s 28天写作 docker build 12月日更

共筑AI开源繁荣生态 | 新一代人工智能院士高峰论坛深度学习框架分论坛成功举办

OpenI启智社区

PassJava 开源 (九) :Spring Cloud 整合 Gateway 网关

悟空聊架构

SpringCloud Gateway passjava 悟空聊架构

最强最全面的大数据SQL系列

五分钟学大数据

sql 大数据 hive

初探语音识别ASR算法

华为云开发者联盟

算法 语音识别 ASR 语音转写文章 声学模型

给弟弟的信第26封|做一个懂得感恩的人

大菠萝

28天写作

网络安全好学吗?网络安全入门篇,安装渗透测试系统kali全套教学

学神来啦

运维 网络安全 渗透测试· kali基础 kali Linux

面试被问一致性hash?看这一篇就够了

公众号:程序猿成神之路

饿了么资深架构师分享云上基础架构演进

阿里云弹性计算

云上架构 运维峰会

【转】java开发之spring面试题

@零度

JAVA开发 spring框架

华为与湖北三所高校共建首批鲲鹏&昇腾产教融合育人基地

科技热闻

Jira Software 年度总结:12个重要功能大放送!

Atlassian

DevOps 敏捷 Atlassian Jira ITSM

迭代你好,我是冲刺

华为云开发者联盟

Scrum 开发 迭代 冲刺 迭代增量开发

智算未来 | 2021新一代人工智能院士高峰论坛智算网络分论坛成功举办

OpenI启智社区

行业分析| AR远程协助-企业的好帮手

anyRTC开发者

音视频 远程协助 远程医疗 远程培训

应用落地 智创未来 | 2021新一代人工智能院士高峰论坛昇腾人工智能应用专场成功举办

OpenI启智社区

人工智能 昇腾

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