在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

评论

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

YashanDB V23.2 LTS发版 | 共享集群首个长期支持版本

YashanDB

产品发布 yashandb 共享集群 崖山数据库

卡片式笔记系统BYEAP介绍

zhumingwu

信创国产化替换势在必行,“重复造车轮”应避免

FinFish

国产化 小程序容器 信创化软件 信创化

玩转云端| 拥有HBlock这项“存储盘活绝技”,数据中心也能“热辣瘦身”!

天翼云开发者社区

云计算 存储 数据中心 集群

金三银四 面试准备 数据结构面试题,编程与算法经典面试题

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

测试

重磅新品发布!云耀数据库HRDS,享受轻量级的极致体验

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号2024年4月PK榜

【JAVA】助力数字化营销:基于协同过滤算法实现个性化商品推荐

智在碧得

机器学习 数据 java 编程 分布式框架 数字化营销

LED电子显示屏新技术

Dylan

技术 信息 数字 电子 LED显示屏

AI将诗意装进口袋!合合信息扫描全能王“扫描书籍”功能优化上线

合合技术团队

人工智能 OCR 图片识别 扫描全能王 扫描书籍

Rust 和 Go?通过详细比较选择最佳编程语言

Liam

Go 编程 程序员 rust 编程语言

MES系统解决方案,MES系统主要能解决什么问题

万界星空科技

数字化 生产管理系统 mes 万界星空科技 车间管理

Ceph的crush算法与一致性hash对比介绍

天翼云开发者社区

云计算 存储 云服务

当世界读书日遇见华为阅读:让电子书读出“画面感”

最新动态

华为阅读·读书会:品读“外卖诗人”眼中的诗与画

最新动态

驼峰与下划线在python中转化

麦兜

Stable Diffusion中的常用术语解析

程序那些事

人工智能 程序那些事 openai

给测试同学的成长书单

老张

书单推荐 技术书单

深化MIAOYUN定位,坚守产品初心!

MIAOYUN

容器 云原生 产品定位 智能运维 MIAOYUN

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