写点什么

基类库的变化与改进

  • 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:031181
用户头像

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

关注

评论

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

悟透前端 | javascript中变量声明var、let、const的区别

devpoint

var const let js变量声明

当视频恋爱 App 用上了 Serverless

阿里巴巴中间件

《携程技术2020年度合辑》,送给爱学习的你

携程技术中心

创始人去世,股权怎么办?|视频号28天(21)

赵新龙

28天写作

2021年了,还听到有些兄弟在问Kafka香不香?

后台技术汇

28天写作

宙斯运维平台简述,看数十万云服务器如何高效运维?

李忠良

28天写作

阿里云重磅发布云拨测产品:深度挖掘数据,精准定位 IT 问题

阿里巴巴中间件

2021直播电商下半场,“网易严选们”为何成主播良港?

脑极体

《我们一起学集合》-ArrayList

蚊子

数据结构 面试 ArrayList JAVA集合

编程小技巧之 Linux 文本处理命令(二)

程序员历小冰

Linux 编辑器 sed

如何查看github评价

Albert

GitHub

西少爷肉夹馍的股权纠纷 | 视频号28天(22)

赵新龙

28天写作

加油,成功通过阿里P7Java岗面试,分享一些面试心得

Java架构之路

Java 程序员 架构 面试 编程语言

微服务“大门”如何选择?

阿里巴巴中间件

“复制”马斯克(二):“一无所有”的世界首富想要什么?

脑极体

智能电动车的估值模式及电气架构变迁 (28天写作 Day21/28)

mtfelix

汽车电子 28天写作 智能汽车 汽车电气架构

批判性思维自修课(三)

石君

28天写作 批判性思维

大数据知识专栏 - MapReduce 的自定义分组求TopN

小马哥

大数据 hadoop mapreduce 七日更

28天瞎写的第二百三十一天:一次被骗的故事

树上

28天写作

谁能拯救终将凋落的头发「幻想短篇 21/28」

道伟

28天写作

服务网格的最佳实践

阿里巴巴中间件

LeetCode题解:200. 岛屿数量,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

对机器视觉领域的几点看法

JiangX

机器视觉 28天写作

创业失败启示录|老老王上的人生第一课

阿萌

28天写作 创业失败启示录 青城

讲真,一位8 年 Java 经验大牛的面试总结,你照猫画虎还怕收不到offer?

Java架构之路

Java 程序员 架构 面试 编程语言

在游戏运营行业,函数计算如何解决数据采集分析痛点?

阿里巴巴中间件

Java 创建线程有哪些方式

武哥聊编程

Java 多线程 28天写作

冲突域和广播域区别,集线器、交换机和路由器对比

折腾CUDA环境,搭建TF2开发环境

IT蜗壳-Tango

七日更

机器学习·笔记之:Cost Function - Intuition II

Nydia

CSS(七)——设置背景颜色和背景图像

程序员的时光

程序员 大前端 七日更 28天写作

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