BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

.NET 4.5对Base Class Library做出改善

| 作者 Jonathan Allen 关注 553 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2012年7月5日. 估计阅读时间: 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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT