前言:

昨天一如既往地登上forums.asp.net答帖子,却被上面的一条滚动新闻雷到了:

.NET 4.1 Preview - New Base Class Library (BCL) Extension Methods - RFC

因为考虑到April 1st的关系,这是Scott Hanselman给大家开的玩笑,还是真的官方消息呢?

从“薛定谔的猫”说起:

哲学家薛定谔( Erwin Schrödinger)有个关于量子理论的一个理想实验,内容如下(懂量子物理学的园友请skip):

这个猫十分可怜,她(假设这是一只雌性的猫,以引起更多怜悯)被封在一个密室里,密室里有食物有毒药。毒药瓶上有一个锤子,锤子由一个电子开关控制,电子开关由放射性原子控制。如果原子核衰变,则放出α粒子,触动电子开关,锤子落下,砸碎毒药瓶,释放出里面的氰化物气体,雌猫必死无疑。

哥本哈根派说,没有测量之前,一个粒子的状态模糊不清,处于各种可能性的混合叠加。比如一个放射性原子,它何时衰变是完全概率性的。只要没有观察,它便处于衰变/不衰变的叠加状态中,只有确实地测量了,它才随机选择一种状态而出现,这么说来,因为我们没有观察,所以箱子里的那个原子处在衰变/不衰变的叠加状态。因为原子的状态不确定,所以猫的状态也不确定,只有当我们打开箱子察看,事情才最终定论:要么猫四脚朝天躺在箱子里死掉了,要么它活蹦乱跳地“喵呜”直叫。问题是,当我们没有打开箱子之前,这只猫处在什么状态?似乎唯一的可能就是,它和我们的原子一样处在叠加态,这只猫当时陷于一种死/活的混合。

薛定谔的猫表达了现实世界中的一种“不确定态”,那么,我们在OO编程时,能不能也体现出一种“不确定态”呢?

也就是说:一个对象,当我们没有使用它时,它是一个“String” 和“Cat”的叠加态,我们使用它时,它既可以是String也可以是Cat:

话又说回来,在编程中,长期以来类型的转换往往是比较严谨的:一个String对象“hello123”并不能被直接表达成一个Int数值,因为这样做往往会得到一个类型转换的exception。

StringOr<TOther>

Ok,让我们来看看大牛们给出的这个泛型类:

namespace System.QuantumEntanglement {
    public class StringOr<TOther> {
        public StringOr(string stringValue, TOther otherValue);

public string StringValue { get; }
        public TOther OtherValue { get; }
    }
}

这个StringOr类将String和一个其它的类型包装在一起,并拥有两个get访问器,分别返回两种类型的值,使用起来也非常简单:

可以通过访问OtherValue属性来轻松的获得userInput对象其它类型的表现形式。

SchrodingOr<TDead, TAlive>

接下来我们再看看这个类:

namespace System.QuantumEntanglement {
    public class SchrodingOr<TDead, TAlive> {
        public SchrodingOr(TDead dead, TAlive alive);

public TAlive Alive { get; }
        public TDead Dead { get; }
    }
}

与上面的StringOr类相似,这个SchrodingOr也通过泛型来为对象提供了“TAlive” 和“TDead” 两种形态,也就是说,这是一个c#版的“薛定谔的猫”。

这时一个SchrodingOr类型的对象,究竟是“TAlive” 还是“TDead” ,需要由“观察者”来确定:

就像下图中的猫一样,这种不确定态已经完全的表现在我们的代码中了:

System.QuantumEntanglement 技术预览:

目前的.NET 4.1 Library正在早期预览中,但产品组决定放出这个System.QuantumEntanglement的类库源码,以及单元测试源码,来收集用户的反馈信息,我们可以在这里下载到:

Class library with unit tests (requires Visual Studio 2008 Professional and higher)

如果有任何问题,可以联系:string.or@microsoft.com.

信息来源的链接(部分图片来源):

http://weblogs.asp.net/leftslipper/archive/2009/04/01/the-string-or-the-cat-a-new-net-framework-library.aspx

http://blog.wekeroad.com/blog/cool-extension-methods-for-new-stringor/

http://lostintangent.com/2009/04/01/string-input-handling-quantum-mechanics/

http://www.hanselman.com/blog/NET41PreviewNewBaseClassLibraryBCLExtensionMethodsRFC.aspx

转载于:https://www.cnblogs.com/blodfox777/archive/2009/04/02/1427972.html

薛定谔的猫——.NET 4.1 中的新基类,开源Preview中相关推荐

  1. 量子物理 薛定谔的猫

    薛定谔的猫是一个著名的出现在量子力学原理中的概念.提出了一种连续状态,即当一个物体尚未被观测到时,它可以处于不同的状态,也就是说,它可以同时是活的和死的,直到它被观察到时,它才会朝一个方向转变.它的图 ...

  2. 薛定谔的猫量子计算机,亚马逊新的量子计算机设计竞依赖于微小的“薛定谔的猫”...

    描述 薛定谔的猫是一种思维实验,在这个实验中,一个量子事件将猫处于生死之间的模糊状态处于在盒子中:只有当打开猫盒观察时,才会明确猫是死了还是活着.现在,亚马逊发布了一种新的量子计算机的设计理论蓝图,该 ...

  3. 86年后,终于有人完成「真人版」薛定谔的猫实验,量子纠缠了活体动物

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 首先要回答的问题:实验是量子的还是经典物理的? 你一定听说过薛定谔的猫 ...

  4. 违背常识、颠覆认知,终于有人把薛定谔的猫讲明白了

    导读:在20世纪30年代中期,新兴量子理论的某些奇怪之处变得明显起来,薛定谔进行了一个思想实验,即"薛定谔的猫".他试图表明,量子理论数学一定是缺了些什么.他认为"猫不能 ...

  5. [前端漫谈_4] 从 薛定谔的猫 聊到 Event loop

    前言 上次我们从高阶函数聊到了 promise ,这次我们聊聊: 从 promise A+ 规范和 promise 应用来看 promise 的特性 promise 和 eventloop 的关系 从 ...

  6. 当 Python 中混进一只薛定谔的猫……

    作者 | 豌豆花下猫 责编 | 胡巍巍 Python 是一门强大的动态语言,那动态体现在哪里,强大又体现在哪里呢? 除了好的方面,Python 的动态性是否还藏着一些使用陷阱呢,有没有办法识别与避免呢 ...

  7. 从“薛定谔的猫”联想到“好奇害死猫”

    喜欢物理学尤其是量子力学的朋友一定对薛定谔的猫不会陌生,至于那些不大懂的小伙伴建议可以网上搜索了解下,对你的人生观.价值观可能会有所改变(不说笑,真的哦). 对于量子论从爱因斯坦.波尔时代至今,一直是 ...

  8. 寻找薛定谔的猫:量子物理的奇异世界

    ▲长按"识别小程序"即可购买    编辑推荐 这只不死不活的猫总是像噩梦一样让物理学家们不得安宁--         全面论述了量子理论的基本概念,并赋予那些无限复杂又伤脑筋的实验 ...

  9. 你也可以看懂,量子力学的困惑,测不准原理 薛定谔的猫 !

    量子力学已经是现代物理学的基础学科之一,其影响力越来越大!巨大的影响力迫使着人们了解它,可量子世界中的种种奇异现象却挑战着常人的逻辑底线.甚至 让许多物理爱好者也摸不着头脑, 以至于玻尔(量子物理学家 ...

最新文章

  1. 权限表管理之保存权限表数据
  2. SAP gateway GWaaS single sign on
  3. CSDN 统一标签设计 征求反馈
  4. Kubernetes精华问答 | K8s架构和组件是怎样的?
  5. gsonformat插件_裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
  6. 三层架构学习的困难_TCP/IP协议栈-之-三层交换技术
  7. KICKSTART无人值守安装系统
  8. android打开视频噔_Android、iOS不可错过!10款堪称神器的高质量APP,请低调使用...
  9. winPE4.0制作过程
  10. 三菱编程软件GX Works2
  11. android 开发sdk 找不到java类_开发Cordova插件(Android)时找不到源Java类
  12. 芯片设计中的时钟与约束
  13. DOOM之父约翰·卡马克
  14. js获取html中图片路径,用js快速的获取html页面中图片的地址
  15. 线性结构-前缀和和差分
  16. ccks2020中文短文本实体链接任务测评论文--小米团队--第一名
  17. 基于Java毕业设计学校图书馆管理系统源码+系统+mysql+lw文档+部署软件
  18. 支付公司如何预防和治理重复出款的风险
  19. Linux CFS调度
  20. 大学物理 习题分析与解答(PDF)

热门文章

  1. 项目管理基础:软件开发的方法介绍
  2. 2019温馨的元旦祝福语 2019元旦祝福语大全!收藏备用!
  3. linux查看 idt日志,实现RCP的日志管理
  4. mysql006添加外键约束
  5. 设计模式 之 抽象工厂模式
  6. 狼叔直播 Reaction《学习指北:Node.js 2022 全解析》
  7. axios源码中的10多个工具函数,值得一学~
  8. 【赠书福利】不扶好眼镜,请别打开这本挑战JS语言特性的书
  9. 如何使用 React 和 React Hooks 创建一个天气应用
  10. linux java环境变量设置