50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

基类库的变化与改进

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

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

关注

评论

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

【C++多线程那些事儿】多线程的执行顺序如你预期吗?

C++后台开发

线程 多线程 后端开发 linux开发 C++开发

深圳前端开发培训机构学习该如何选择?

小谷哥

LED显示屏的扫描模式及基本工作原理

Dylan

LED LED显示屏 led显示屏厂家

DTSE Tech Talk | 第9期:EiPaaS驱动企业数字化转型

华为云开发者联盟

云计算 后端 数字化转型 华为云 企业号十月 PK 榜

大专学历参加大数据培训可以吗

小谷哥

KubeEdge云原生边缘计算公开课首发

华为云开发者联盟

云原生 后端 华为云 企业号十月 PK 榜

小巨人,大能量!融云成功入选国家级专精特新“小巨人”企业

融云 RongCloud

企业 IM RTC

OpenMLDB BUG 悬赏令

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

共享存储是什么意思?与DRBD有什么区别?

行云管家

高可用 ha Skybility HA 高可用性

ArrayList源码解析

Jeremy Lai

源码 ArrayList

活动预告 | 2022 SACC 中国系统架构师大会

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

OpenMLDB 新手宝典 开发者上手必读

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Linux三剑客grep、sed、awk以及正则表达式

A-刘晨阳

Linux 运维 11月月更 三剑客

一文读懂加密资产板块的盈利潜力与投资机会

鳄鱼视界

服务器的正向代理与反向代理

我是一个茶壶

服务器 正向代理与反向代理 11月月更

Java NIO关键概念之Buffer

老农小江

Java 源码解读 java nio

大数据培训哪个比较好

小谷哥

大专学历参加大数据培训,学费多少?

小谷哥

【面试题系列】CurrentHashMap的实现原理

颜淡慕潇

Java HashMap底层原理 面试题系列

国内低代码开发平台有哪些作用?

优秀

低代码开发平台

Linux常用命令

我是一个茶壶

Linux 命令 11月月更

TDengine | taosdump 的使用方法和注意事项

TDengine

数据库 tdengine 时序数据库

赋能千行百业数字化转型,OpenHarmony生态新成果即将亮相HDC2022

OpenHarmony开发者

Open Harmony

【网易云信】深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易智企

音视频 即时通讯IM

golang中的错误处理

六月的

golang 错误处理

武汉web前端培训机构去哪好?

小谷哥

云安全厂商那么多,我们该怎么选择?

行云管家

云计算 企业上云 云厂商 云转售

AntDB内存管理之内存上下文

亚信AntDB数据库

AntDB aisware antdb AntDB数据库 企业号十月PK榜 企业号十月 PK 榜

HDC2022 开发者亮点抢先看,线上线下精彩活动等你探索!

HarmonyOS开发者

HarmonyOS

深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易云信

音视频 即时通讯IM

前端性能优化常问面试题-防抖节流

肥晨

防抖 节流 防抖节流 前端面试题 11月月更

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