写点什么

基类库的变化与改进

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

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

关注

评论

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

创元集团的数智化实践 这次选择了和火山引擎VeDI搭档

字节跳动数据平台

大数据 数据治理 12 月 PK 榜

学习大数据技术后的就业前景怎么样

小谷哥

女生参加前端培训学习有前途吗?

小谷哥

技术分享 | 测试的本质是什么?

霍格沃兹测试开发学社

图算法、图数据库在风控场景的应用

NebulaGraph

图数据库 风控

启科 QuSaaS 真随机数解决方案与 Amazon Braket 结合实践

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 Hero 专栏

线上线下大数据培训机构应该怎么选

小谷哥

百度工程师带你体验引擎中的nodejs

百度Geek说

JavaScript 前端 nodejs 12 月 PK 榜

远程灵活办公,就用华为云桌面

科技说

什么是数据管理?看完这篇你一定有收获

雨果

数据管理

【JVM实战系列】「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康!

码界西柚

Java JVM Alibaba Arthas 12 月 PK 榜

【基础知识】PCB板上的字母数字是什么意思,代表哪些元器件?

华秋PCB

元器件 PCB PCB设计

教你用JavaScript实现大转盘

小院里的霍大侠

JavaScript 初学者 入门实战

带你读AI论文丨针对文字识别的多模态半监督方法

华为云开发者联盟

人工智能 华为云 文字识别 12 月 PK 榜

校招面试真题 | 你的期望薪资是多少?为什么?

霍格沃兹测试开发学社

【kafka运维】Leader重新选举运维脚本

石臻臻的杂货铺

kafka 运维

前端培训机构学习前端开发难度大吗

小谷哥

TypeScript 前端工程最佳实践

京东科技开发者

typescript 前端 前端开发 编程语言】

这个团队敢闯、会创,北京交通大学团队结合昇思MindSpore技术助力打造“智慧安全交通”

极客天地

探索科创服务升级之路,星创科服“贴身陪伴”硬科技冠军企业成长

硬科技星球

武汉java培训后可以选择那些就业方向

小谷哥

schema设计与管理

刺猬

论文复现丨基于ModelArts进行图像风格化绘画

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

头像类NFT的未来,实际价值在哪里?

博文视点Broadview

数据中台选型前必读(七):解读数据服务的四大关键技术

雨果

数据中台 DaaS数据即服务

大道至简,自治为王 | 2022年12月《中国数据库行业分析报告》精彩抢先看

墨天轮

数据库 Serverless 云数据库 国产数据库 polarDB

数据人PK也无人,为什么业务部门的数据需求都是急活?

雨果

数据开发 数据工程师 数据服务

企业大数据价值最大化的关键因素

元年技术洞察

大数据 数据中台 数字化转型

云上安全办公,就用华为云桌面

科技说

如何通过Java提取PDF中的图片

Geek_249eec

Java PDF 图片

阿里云助力抖音,为2022世界杯护航

云布道师

阿里云

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