写点什么

.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:382277
用户头像

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

关注

评论

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

虎符Hoo交易所开启全新生态布局 完成HOO首次回购

区块链前沿News

Hoo 虎符交易所 HOO回购

HTTP流量神器Goreplay核心源码详解

华为云开发者联盟

Go 流量 GOREPLAY TCP/HTTP

千万级CPS的开源网络压测软件dperf

百度开发者中心

【网络安全】知名网络安全企业有哪些?

行云管家

网络安全 数据安全 堡垒机

百度App Objective-C/Swift 组件化混编之路(一)

百度开发者中心

DevSecOps端到端的安全能力构建为什么重要

极狐GitLab

安全 DevSecOps

人才短缺、成本高昂,制造企业智能化转型路径如何破局?

百度开发者中心

教你一个快速视频处理的神器:Python moviepy

华为云开发者联盟

Python 视频 音频 视频处理 Moviepy

官宣 | 极狐GitLab SaaS来了

极狐GitLab

剖析react核心设计原理--异步执行调度

有道技术团队

2021年第4季度中国网络零售B2C市场交易规模达23593.9亿元

易观分析

B2C 网络零售

深入浅出特征工程 – 基于 OpenMLDB 的实践指南(上)

第四范式开发者社区

机器学习 数据库 大数据 OpenMLDB

Geospatial Data 在 Nebula Graph 中的实践

NebulaGraph

图数据库 知识图谱 分布式图数据库

用UML来描述领域模型吧

蜜糖的代码注释

UML 领域建模 2月月更

【Python训练营】Python每日一练----第23天:字符计数

是Dream呀

2月月更

为冬奥加油——利用贝塞尔曲线实现冰墩墩

战场小包

前端 canvas 冬奥会 2月月更

OpenHarmony移植案例与原理:startup子系统之syspara_lite系统属性部件

华为云开发者联盟

Token OpenHarmony startup子系统 syspara_lite系统

英特尔至强单月总出货量超其他厂商全年服务器CPU总出货量

科技新消息

在线YAML转XML工具

入门小站

工具

注意!这种笔试方式正在逐渐被取代……

ShowMeBug

笔试 在线面试

Python代码阅读(第75篇):阶乘

Felix

Python 编程 阅读代码 Python初学者 阶乘

学术论坛第七期:基于统计的预测算法

云智慧AIOps社区

统计学 预测模型

图计算 on nLive:Nebula 的图计算实践

NebulaGraph

图数据库 知识图谱 图计算 分布式图数据库

腾讯音乐知识图谱搜索实践

NebulaGraph

图数据库 知识图谱 分布式图数据库

【堡垒机】堡垒机是啥?一线品牌有哪些?

行云管家

网络安全 数据安全 堡垒机 IT运维

百度App Objective-C/Swift 组件化混编之路(二)- 工程化

百度开发者中心

美景本天成,妙笔偶得之——“妙笔”是怎样炼成的?

百度开发者中心

刷屏的“1620”有多难?3D+AI技术带你一秒看懂

百度开发者中心

关于极狐GitLab SaaS,你应该知道这些!

极狐GitLab

DevSecOps SaaS平台

直播预告|一线专家邀你共话:数据科学赋能多元应用场景价值

MobTech袤博科技

算法 数据 商业

作业7

施正威

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