写点什么

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

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

关注

评论

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

通义灵码上新推理模型,快来体验数学和编程双冠王 Qwen2.5-Max

阿里云云效

阿里云 云原生 通义灵码 AI程序员 AI程序员体验官

2025 国内知名 RPA 厂商大剖析,企业该如何抉择?

Techinsight

RPA 金智维 AI Agent

YashanDB服务端安装(命令行)

YashanDB

数据库 yashandb

DApp开发从入门到精通:以太坊/Solana公链生态实战解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

通义灵码上新推理模型,快来体验数学和编程双冠王 Qwen2.5-Max

阿里巴巴云原生

阿里云 云原生 通义灵码 AI程序员 AI程序员体验官

Flink CDC + Hologres高性能数据同步优化实践

Apache Flink

大数据 flink 实时计算 hologres

财务数字化转型下,RPA 如何成为财务人的得力助手?

Techinsight

RPA 财务 RPA评测 财务关键 财务办公

2025 财务 AI 浪潮来袭,这些工具你还不知道就 OUT 了!

Techinsight

AI RPA评测 AI Agent 财务办公

TencentOS Server AI 全栈DeepSeek工具箱

TencentOS

YashanDB下载软件包方法

YashanDB

数据库 yashandb

对比Jira/禅道后,我们为什么选择Leangoo做敏捷项目管理?

云端拾光

项目管理 敏捷研发 敏捷工具 看板工具 看板软件

绝了!k3s (k8s) 安装 ollama 运行 deepseek 全流程揭秘,yaml全公开

福大大架构师每日一题

福大大架构师每日一题

3D LED屏幕的创新应用及未来发展方向

Dylan

应用 3D LED LED display LED显示屏

关注单店盈利模型!连锁餐饮数字化这么做

奇点云

大数据 零售 餐饮 连锁

IPv6改造:隧道技术的原理和优缺点分析

国科云

Databend 产品月报(2025年2月)

Databend

2025 科技前沿!大模型与智能体的超强联动力大揭秘!

Techinsight

智能体 #大模型 AI 智能体

韩国互联网巨头 NAVER 如何借助 StarRocks 实现实时数据洞察

StarRocks

Clickhouse StarRocks #大数据 naver

质变科技AI-ready Data Cloud:生成式AI分析 VS ChatGPT

AI数据云Relyt

ChatGPT 生成式AI LLM ChatBI AI分析

质变科技AI-ready Data Cloud:生成式数据分析Relyt AI全球用户突破120万

AI数据云Relyt

数据分析 Datacloud AI分析 生成式AI分析 AI数据分析

IK Multimedia T-RackS 6 MAX for Mac:打造专业级音乐母带

小玖_苹果Mac软件

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