写点什么

.NET 4.5 对 Base Class Library 做出改善

  • 2012-07-04
  • 本文字数:1193 字

    阅读完需:约 4 分钟

Base Class Library 是.NET 开发平台的核心。不管你使用了何种配置或者前端技术,都会在应用程序中找到使用 BCL 的地方。以下是期望在.NET 4.5 中做出改善的地方:

System.IO

对于耗费大量资源的操作,Stream、TextReader 和 TextWriter 类都拥有了新的 async 方法。这里的消耗我们指的是“可能会在一次操作中做大量工作”。而像 TextReader.Peek 之类的方法不会获得 async 版本的方法。背后的原因在于,坦率地说,async 操作并不会节省资源。它们需要分配 Task 对象,可能还需要做上下文切换,处理缓存可能失效的情况,因此总体上不适合用于严格的循环中。 Immo Landwerth 接着说到,

一般的指导原则是: 让你的异步操作尽可能地厚重。例如,如果你想要使用 BinaryReader 从流中读取 1000 个 Int32 的数据,最好运行并等待一个任务同步地读取所有 1000 条数据,而不是分别运行并等待 1000 个任务,每个任务都只读取一条 Int32 数据。

说到 BinaryReader,你现在可以告诉它不要自动关闭它所包装的流。这个特性对 BinaryWriter、StreamReader 和 StreamWriter 同样适用。

Immo 还提到,.NET BCL 现在使用了开源程序库zlib 来实现System.IO.Compression 命名空间。这包括对DeflateStream 性能的修正,以及新的 ZipArchive 类。这并非是 zlib 第一次被微软使用,它还用于 Windows 的 Zip 文件支持和 WPF 中。

System.Collection

我们已经谈到了.NET 4.5 中的只读集合,到现在为止其中并没有显著改变。值得注意的一种被遗漏的特性是IReadOnlySet,它被用于匹配HashSet 和ISet。

抽象类Comparer 使用了一些函数式编程的优势。你不能显式地实现这个类,而是需要调用 Comparer.Create ,在一个比较函数中传递它,然而让它来负责其他处理。

很少有人知道 ArraySegment 结构,它也获得了重大改进,第一次真正实现了让它变得有用的接口,像 IEnumerable 和 IList。然而,它只对裸数组(naked arrays)有效,大多数开发者更喜欢使用更高级别的集合类,像 List。

杂项

AssemblyMetadataAttribute 现在是对集合赋予任意键值对的标准方式。你可能不清楚为什么会使用它,而不是定义自定义的属性,但是如果你想的话就可以那样用。

Console 现在让你知道输入、输出或者错误流是否被重定向。你可能最多是使用它来禁用依赖于设置鼠标位置或者改变屏幕颜色的特性。如果你需要支持额外的字符,还可以把编码变更为 Encoding.Unicode。

WeakReference 提供了替换 WeakReference 的类型安全的方法。为了消除长期存在的竞争条件,WeakReference 不再提供单独的 IsAlive 和 TryGetTarget 方法。取而代之的是,它们被组合到 TryGetTarget 之中。

不幸的是,看起来我们不会有相匹配的 WeakDelegate,如果存在的话,会让实现弱事件更容易。

Regex 现在支持 Timeout 属性。这是很重要的工具,当允许用户注入任意的正则表达式的时候,可以避免拒绝服务攻击。

查看英文原文:.NET 4.5 Improves to the Base Class Library

2012-07-04 03:382076
用户头像

发布了 340 篇内容, 共 138.1 次阅读, 收获喜欢 13 次。

关注

评论

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

DSN主流项目调研1——Storj和Arweave的简介

AIbot

分布式存储 区块链+ 分布式文件存储 Storj Arweave

带你体验Vue2和Vue3开发组件有什么区别

三钻

Java Vue 大前端 Vue3 React

VSCode常用快捷键大全|VSCode高级玩家宝典之第一篇

三钻

学习 程序员 效率工具 vscode 快捷键

SpringCloud服务注册与发现(Eureka)

xcbeyond

Java SpringCloud Eureka 服务注册与发现

憋再PS抠图了,3行代码给你安排的明明白白!

wangkx

生产力 图像识别

【数据结构与算法】如何高效学习数据结构与算法

三钻

学习 数据结构与算法

CentOS7 下Docker安装、启动

xcbeyond

Docker 软件安装

前端必看的8个HTML+CSS技巧

三钻

Java html html5 css3 大前端

VSCode插件大全|VSCode高级玩家之第二篇

三钻

程序员 vscode 编辑器 插件 技巧

区块链技术在银行业的运用

CECBC

区块链 信息安全 金融

【第十周作业】

Aldaron

国内外低/零代码的有哪些代表?

代码制造者

编程语言 低代码 零代码 信息化 开发应用

Lambda架构已死,去ETL化的IOTA才是未来

易观大数据

更优雅的编写JavaScript

三钻

Java 程序员 大前端 经验分享 ES6

DSN 主流项目调研 0——IPFS&&Filecoin白皮书总结

AIbot

区块链 分布式存储 分布式文件存储 IPFS Filecoin

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

xcbeyond

Java Docker idea插件

写给想学和在学编程的你们,学习编程的7个好处

三钻

学习 程序员 软件开发 编程之路 经验分享

docker-compose构建springcloud微服务项目

xcbeyond

Java Docker Docker-compose springboot

【FCC前端教程】44关学习CSS与CSS3基础「一」

三钻

CSS css3 程序员 大前端

6个高效学习编程的方法

三钻

学习 程序人生 大前端 后端

图解JavaScript——代码实现(六种异步方案,重点是Promise、Async、发布/订阅原理实现,真香)

执鸢者

原理 异步 Promise Async

【第十周】学习笔记

Aldaron

浅析Python3列表操作之*和*=

wangkx

Python Python基础

用“易于改编”原则,提升编程水平,写出更好的代码

三钻

程序员 大前端 后端 经验分享 编程风格

Git分支管理策略及简单操作

wangkx

git git flow

解读CDN的应用场景与产品价值

阿里云Edge Plus

CDN

【FCC前端教程】28关学会HTML与HTML5基础

三钻

CSS html 大前端

你真的懂怎么写`服务层`吗?

三钻

php 程序员 后端 服务 架构思维

5大法则助你 成为更出色的开发者

三钻

学习 编程 程序员 敏捷开发 经验分享

VSCode配置同步|VSCode高级玩家宝典之第三篇

三钻

程序员 效率工具 vscode 开发工具

职业发展的迷茫与困境:你真的了解晋升机制吗?

伴鱼技术团队

职业规划 技术管理 技术交流 职业成长 技术人生

.NET 4.5对Base Class Library做出改善_语言 & 开发_Jonathan Allen_InfoQ精选文章