产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

基类库的变化与改进

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

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

关注

评论

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

【ELT.ZIP】OpenHarmony啃论文俱乐部—数据密集型应用内存压缩

ELT.ZIP

OpenHarmony 压缩数据 压缩算法 ELT.ZIP

跟着官方文档学 Python 之:简介

甜甜的白桃

Python 零基础 6月月更

关于企业数字化的展望(38/100)

hackstoic

数字化

如何使用物联网低代码平台进行画面管理?

AIRIOT

低代码 物联网 低代码开发 低代码开发平台 低代码,项目开发

Bit.Store:熊市漫漫,稳定Staking产品或成主旋律

鳄鱼视界

在线文本按行批量反转工具

入门小站

工具

可观测,才可靠:云上自动化运维CloudOps系列沙龙 第一弹

阿里云弹性计算

DevOps 可观测性 自动化运维 CloudOps

一套系统,减轻人流集中地10倍的通行压力

天天预约

人脸识别 考勤管理 设备接入 预约工具 疫情防控

国内首家!EMQ加入亚马逊云科技“初创加速-全球合作伙伴网络计划”

EMQ映云科技

物联网 IoT emq 亚马逊 6月月更

Hi,你有一份Code Review攻略待查收!

Jianmu

后端 Code Review 代码规范 SonarQube checkstyle

4种方法教你如何查看java对象所占内存大小

华为云开发者联盟

Java 开发 内存 代码

【ELT.ZIP】OpenHarmony啃论文俱乐部—见证文件压缩系统EROFS

ELT.ZIP

OpenHarmony 压缩数据 压缩算法 ELT.ZIP

2022年第一季度消费金融APP用户洞察——总数达4479万人

易观分析

消费金融

OpenSSF 安全计划:SBOM 将驱动软件供应链安全

SEAL安全

软件物料清单

工作流自动化 低代码是关键

力软低代码开发平台

拥抱云原生:江苏移动订单中心实践

鲸品堂

云原生

如何制作登录界面

海瞳Seapupil

什么是 ICMP ?ping和ICMP之间有啥关系?

wljslmz

网络协议 ping ICMP 6月月更

Substrate 源码追新导读: 4月底重大更新: Nomination Pool 即将上线, NFT增加锁定功能

彭亚伦

Substrate 波卡 波卡生态

SQL报了一个不常见的错误,让新来的实习生懵了

华为云开发者联盟

数据库 sql 程序员 后端 华为云

开箱即用!Linux 内核首个原生支持,让你的容器体验飞起来!| 龙蜥技术

阿里巴巴云原生

Linux 阿里云 容器 云原生

大促场景下,如何做好网关高可用防护

阿里巴巴云原生

阿里云 高可用 云原生 网关 高可用微服务

2022年中国音频市场年度综合分析

易观分析

音频市场

Vue3 - $attrs 的几种用法(1个或多个根元素、Options API 和 Composition API)

德育处主任

Vue composition-api 组件通信 6月月更 Vue透传

Bit.Store:熊市漫漫,稳定Staking产品或成主旋律

西柚子

大数据性能提升28%!阿里云新一代本地SSD实例i4开放公测

阿里云弹性计算

大数据 io SSD NoSQL 数据库

Bit.Store:熊市漫漫,稳定Staking产品或成主旋律

小哈区块

【干货分享】红黑树硬核讲解

C++后台开发

后端开发 红黑树 linux开发 Linux内核 C++开发

带你认识图数据库性能和场景测试利器LDBC SNB

华为云开发者联盟

人工智能 华为云 图数据库

数仓的字符截取三胞胎:substrb、substr、substring

华为云开发者联盟

数据库 后端 开发 华为云

从科研创新到产业落地 华为发布人工智能大模型全流程使能体系

科技热闻

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