.NET 4.1 预览 – 新Base Class Library(BCL)扩展方法 – RFC

[原文发表地址] .NET 4.1 Preview - New Base Class Library (BCL) Extension Methods - RFC

[原文发表时间] 2009-03-31 23:50

作为Web编程人员,我们会使用许多字符串来替代web相关的数据。我们常常会用字符串来表示一个日期(date),一个整数(integer)或者一个布尔类型(Boolean)。比如用"1"来代替1,或者"April 1, 2009"代替传统的ISO-8601日期格式。

虽然这些字符串在网络中比比皆是,十分常见,但是有时候,这种随意,甚至有些粗心的应用方式会混入我们自己的代码。我们可能发现我们把数据作为字符串保留的越来越久,甚至都懒得把他们转换成相应的格式。而且随着JSON和无架构(schema-less)/无命名空间(namespace-less)的XML(我将之称为“尖括号分隔文件”,因为它在某种程度上和CSVs一样没用)的应用,这个问题更是每况愈下。

.NET 4.0基本是定了,不过4.1版的还有些很酷的特征正在商讨中。如果我们不知道一个字符串的类型,或者想要把它作为字符串的格式保留的比通常情况更久一些,我们为什么不创造一个类,既能是字符串又能是其他类型呢?就是推迟决定直到变量确定,比如说:

StringOr<int> userInput= GetUserInput("Quantity"); string szUserInput=userInput.StringValue; int intUserInput=userInput.OtherValue;

有时候你就是不知道或者没法知道。

这又让我想到一个类似的,但正交的物理概念,那就是海森堡测不准原理。有时你知道一个对象是一个字符串(string),有时候你知道它有多长,但你不可能同时知道这两点。

一个我很喜欢的笑话是这么说的:

海森堡开车被警察拦下,警官问他:“你知道你开得有多快吗?”海森堡回答:“不知道,不过我准确地知道我在哪里!”

这个库并不能解决“那个”关于字符串的问题,但我们DevDiv的开发人员在研究这个问题以及其他哲学和物理问题,这些都能应用于计算机科学。

非常感谢Eilon,他为将此加入.NET 4.1 Base Class Library作出了巨大努力。点击Eilon的博客可以查询到更多有关这个新的library,代码,图像以及如何更智能地解决此类问题的详细信息。

但愿,有人能致力于将这个重要的新的library做成开源。

亲爱的读者,你觉得呢?