写点什么

基类库的变化与改进

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

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

关注

评论

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

Qt|双缓存机制

中国好公民st

c++ qt 10月月更

C++学习---_IO_new_fdopen函数原理分析学习

桑榆

c++ 源码分析 10月月更

什么是 Python 垃圾回收机制中的引用计数

宇宙之一粟

Python 垃圾回收机制 引用计数 10月月更

令人头秃的js隐式转换面试题,你能做对吗

loveX001

JavaScript

深度剖析React懒加载原理

xiaofeng

React

Vue3入门指北(八)v-model

Augus

Vue3 10月月更

【牛客刷题-算法】NC16 对称的二叉树

清风莫追

算法 二叉树 10月月更

2022-10-04:以下go语言代码输出什么?A:{123} main.T{x:123} B:{123} T{x:123} C:boo boo D:boo main.T{x:123}。 packag

福大大架构师每日一题

golang 福大大 选择题

ESP32-C3 学习测试 蓝牙 篇(六、添加 Service)

矜辰所致

service 蓝牙 ESP32-C3 10月月更

硬核好文!网络拓扑类型:总线、环形、星形、网状、树形、点对点、混合

wljslmz

网络技术 网络拓扑 10月月更

【愚公系列】2022年10月 Go教学课程 018-分支结构之switch

愚公搬代码

10月月更

【牛客刷题-算法】NC25 删除有序链表中重复的元素-I

清风莫追

算法 链表 10月月更

基于IDE和dlv远程调试Kubernetes组件

琦彦

Go Kubernetes 调试 10月月更 delve

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript

经常会采坑的javascript原型应试题

loveX001

JavaScript

一Go到底】第四天---数据类型

指剑

Go golang 10月月更

【C语言难点突破】指针入门讲解

Geek_65222d

10月月更

InetAddress.getLocalHost() 执行很慢?

xiaoxi666

网络 网络库

React-Hooks怎样封装防抖和节流-面试真题

beifeng1996

React

React中常见的TypeScript定义实战

xiaofeng

React

深入了解计算机语言

邱学喆

响应式编程 C语言 汇编 对象编程 C++

Python应用之反转字符串

芯动大师

10月月更 反向字符串输出 函数与表达式

【牛客刷题-算法】NC22 合并两个有序的数组

清风莫追

算法 数组 10月月更

书单推荐|宅家不动过国庆,好书相伴不寂寞

图灵社区

书单 国庆节

网络请求模块(2)

张立梵

Python. 爬虫必备知识讲解 10月月更

微服务通信

穿过生命散发芬芳

微服务 10月月更

恼人的网络时延

agnostic

网络时延

开发者有话说|我何以坚持编程25年?

个人成长

书单推荐|宅家不动过国庆,好书相伴不寂寞

图灵教育

书单 国庆节

最长回文串

掘金安东尼

10月月更 算法、

面向对象究竟是什么鬼?该如何理解?

乌龟哥哥

10月月更

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