写点什么

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

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

关注

评论

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

论文解读 | OS Agents: A Survey on MLLM-based Agents for General Computing Devices Use

OSAgentSurvey

智能体 GUI 大语言模型 多模态大模型 论文解读

你有一份待查收的TextIn文档解析内测邀请函!

合合技术团队

图像识别 #人工智能 文档解析技术 弯曲矫正

对话4位技术大咖,探秘华为开发者空间打破壁垒,实现跨平台协作

华为云开发者联盟

马斯克、黄仁勋共同“打响”2025年全球人形机器人商业化第一

机器人头条

英伟达 科技 特斯拉 人形机器人 具身智能

SecureCRT for mac(终端SSH工具)

Mac相关知识分享

内置大语言模型的绿联AI NAS私有云存储惊艳CES,酷睿Ultra为AI算力保驾护航

E科讯

AI Agent:软件测试自动化的新纪元

测试人

软件测试

万字长文:京东保险供应链的前世今生

京东科技开发者

像素间距小型化趋势明显,将加速LED小间距市场发展

Dylan

技术 LED显示屏 led显示屏厂家 户内led显示屏 市场

智慧公厕解决方案:定制化服务,满足多样化需求

光明源智慧厕所

医学影像软件开发的技术框架

北京木奇移动技术有限公司

医学影像 软件外包公司 webgl开发

医学影像软件的开发的技术难点

北京木奇移动技术有限公司

医学影像 软件外包公司 webgl开发

想要冲击腾讯的朋友不要错过

王中阳Go

腾讯 面经

妙啊!VSCode Python 终端环境隔离的背后原理

秃头小帅oi

Proxifier for Mac(全局代理客户端)

Mac相关知识分享

EasyExcel碰到问题记录

京东科技开发者

AI正在如何重塑未来职业发展路径?

天津汇柏科技有限公司

AI 人工智能

从网络到支撑系统,GenAI将给运营商带来哪些变化?

鲸品堂

通信运营商 GenAI 企业号 2025年1月PK榜

去哪儿国际酒店AI生成视频实践

Qunar技术沙龙

人工智能 AI视频

社交软件红包技术解密(四):微信红包系统是如何应对高并发的

JackJiang

网络编程 即时通讯 IM

医学影像软件的开发流程

北京木奇移动技术有限公司

医学影像 软件外包公司 webgl开发

英伟达首席工程师Corey: HNSW+CPU过时了!GPU+RAPIDS cuVS才是向量检索最优解

Zilliz

gpu cpu 英伟达 向量检索 Milvus

DeepSeek-V3模型:软件测试智能化的新篇章与挑战

测试人

软件测试

“考公”有捷径?Milvus助力粉笔教育构建个性化考公RAG

Zilliz

Milvus rag 粉笔教育 图搜召回

BetterDisplay Pro Mac(显示器管理工具)

Mac相关知识分享

智源研究院发布2025十大AI技术趋势

智源研究院

医学影像软件的开发

北京木奇移动技术有限公司

医学影像 软件外包公司 webgl开发

鸿蒙 NEXT 开发中,普通对象跨线程如何传递

威哥爱编程

HarmonyOS HarmonyOS NEXT HarmonyOS5.0

Spring缓存注解浅析及实践

京东科技开发者

DriveDx for mac(mac磁盘健康检测和监控工具)

Mac相关知识分享

IT运维大侠的秘密武器-堡垒机简单介绍

行云管家

堡垒机 IT运维 运维‘

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