写点什么

基类库的变化与改进

  • 2008-12-21
  • 本文字数:1279 字

    阅读完需:约 4 分钟

自 2005 年以来,基类库就处于停滞之中。当其余的.NET 框架基于 CLR 2.0 版本之上不断演进与构建时,基类库团队却在缓慢地构建他们的期望列表。跟随着.NET 4 的脚步,CLR 和 BCL(基类库)的新版本也蓄势待发,一些改进也最终得到了实现。

新的类型

类似 IronPython 和 F#的语言虽然简单,却与核心的.NET 语言是完全背离的,它们具有真正的整数类型。VB 和 C#限制了整数必须符合给定的设置位,而这些语言实际上可以设置为任何值。但是,为了共享二者之间的价值,别说与其它语言,甚至是一个通用的实现都是需要的。基类库会添加一个类型BigInteger。这一高性能的实现是由 BCL 团队和 Microsoft Solver Foundation 一起联合开发的。

另一个主要为 F#和 IronPython 添加的类型为Tuples。Tuples 本身并无任何特别之处,本质上就是一个数据结构,能够存储一组固定长度的值。从某种程度上讲它就像是一个数组,但每个值都可以是不同的类型。与 BigInteger 相似,在基类库级引入它的主要原因是为了避免重复且不一致的实现。

在集合中新增的类为 SortedSet。这是另外一个可以支持排序的对象集合的类,其中每个排序键必须是唯一的。目前仍然缺乏允许键重复的排序列表。

非托管的内存支持

在处理巨型文件时,真正的开发人员会转而使用一种技术,名为内存映射文件。顾名思义,一个内存映射文件将一个类似文件的结构映射到内存的地址中。除了实际的文件,设备与共享内存对象都能够被映射。使用内存映射文件的一种最常见的情形是内部进程通信。要做到这一点,每个应用程序都要打开相同的文件描述符。在 BCL 的下一个版本中,.NET 开发人员将能够直接使用内存映射文件,而无需通过平台调用的方式。

国际化

.NET 4 和 Silverlight 2 的资源管理器都将支持用户对 UI 语言的参数选择,而不是仅仅将其默认设置为 CurrentUICulture 链。当用户拥有多个首选语言时,这一功能就显得非常重要。

不一致的变化

System.String中,好几个方法的默认比较逻辑都发生了变化。它不会影响到仅仅使用英语的应用程序,但可能会影响到国际化应用程序。

System.String(StartsWith,EndsWith,IndexOf 和 LastIndexOf)的默认部分的匹配重载被修改为默认与文化信息无关(顺序)。此外,System.String 以及 System.Char 的 ToUpper 和 ToLower 则被修改为使用不可变的文化信息,而不是使用当前文化信息。虽然我们已经制定了编程指南以及 FxCop 规则,以建议开发者总是使用接受 StringComparison 参数的重载方法,但开发者总是不自觉地使用默认的重载方法。在.NET 之前的版本中,默认的重载方法使用当前文化信息实现与文化信息相关的比较。当对此没有充分认识的开发人员,使用默认的重载方法执行安全敏感的字符串比较时,总会出现一些莫名其妙的错误,且具有明显的安全弱点,

性能改善

目前,Directory 和 DirectoryInfo 的方法是返回数组。这就意味着在单个入口被访问之前,必须生成整个文件数组。随着IEnumerable 对 Directory 和 DirectoryInfo 的额外支持,在目录的第一个文件被即刻访问时,列表的其余文件则可以延迟生成。

查看英文原文: Changes and Improvements to the Base Class Library

2008-12-21 21:031169
用户头像

发布了 109 篇内容, 共 45.9 次阅读, 收获喜欢 14 次。

关注

评论

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

前端面授培训课程哪里好呢

小谷哥

Python对txt进行读写操作

Geek_7ubdnf

Python

I see you!「2022 龙蜥社区优秀贡献者」正式启动

OpenAnolis小助手

开源 龙蜥社区 2022 奖项 优秀贡献者

无需服务器开发,实现设备状态缓存方案——实践类

阿里云AIoT

sql 缓存 运维 物联网 存储

Python将图片输出为二维数组并保存到txt中

Geek_7ubdnf

Python

未来软件开发主流模式——低代码开发

力软低代码开发平台

Python将二维数组输出为图片

Geek_7ubdnf

Python

软件测试/测试开发丨从 0 开始学 Python 自动化测试开发(二):环境搭建

测试人

Python 软件测试 自动化测试 测试开发

极光笔记 | 如何为 iOS 16 创建一个实时活动

极光GPTBots-极光推送

ios 开发者 运营 API

带你来吃瓜!Andy Pavlo教授带您一文回顾数据库的2022年

StoneDB

MySQL 数据库 HTAP StoneDB 企业号 1 月 PK 榜

PyTorch中 torch.nn与torch.nn.functional的区别

Geek_7ubdnf

Python PyTorch

RPN:Region Proposal Networks (区域候选网络)

Geek_7ubdnf

图像处理

深圳大数据程序员培训多长时间可以找工作

小谷哥

房价危机:疫情后时代席卷全球的新变局|数据报告

前嗅大数据

数据分析 数据采集 爬虫案例 爬虫工具 房价

PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法

Geek_7ubdnf

Python PyTorch

小令观点 | 个人信息泄露——当代数字身份之殇

令牌云数字身份

数字身份 信息泄露 身份

这可能是Feign调用可重试的最佳方案了

JAVA旭阳

Java spring

如何通过Java应用程序添加或删除 PDF 中的附件

在下毛毛雨

PDF Java’ 添加注释

Python中LSTM回归神经网络的时间序列预测

Geek_7ubdnf

Python

堆叠降噪自动编码器 Stacked Denoising Auto Encoder(SDAE)

Geek_7ubdnf

图像处理

软件测试/测试开发丨Google 测试总监聊如何经营成功的测试职业生涯

测试人

软件测试 自动化测试 测试开发 职业生涯

软件测试/测试开发丨如何从 0 开始学 Python 自动化测试开发(一)

测试人

Python 软件测试 自动化测试 测试开发

尚硅谷Filebeat视频教程发布

小谷哥

创建Root权限虚拟环境

Geek_7ubdnf

Linux

上海前端培训课程哪家的好

小谷哥

培训学习大数据开发技术怎么样

小谷哥

高性能网络SIG月度动态:virtio新设备进入virtio规范、smc新特性IPC性能比tcp提升88% | 龙蜥SIG

OpenAnolis小助手

操作系统 高性能网络 龙蜥社区 sig virtio

PyTorch的简单实现

Geek_7ubdnf

Python PyTorch

稳扎稳打,坚定前行 | 一文带你回顾 StoneDB 的 2022 年

StoneDB

MySQL 数据库 HTAP StoneDB 企业号 1 月 PK 榜

基类库的变化与改进_.NET_Jonathan Allen_InfoQ精选文章