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

前言:

昨天一如既往地登上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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最硬核文科生,擅长解决数学难题,却视考试成为终生噩梦

全世界只有3.14 %的人关注了青少年数学之旅“数学存在的价值&#xff0c;不只是为了生活上的应用&#xff0c;它不应沦为供工程、商业应用的工具&#xff0c;数学的突破仍需要不断地去突破现有格局。”——节选自《数学之旅 闪耀人类的54个数学家》他是一位浪漫的法国人&#…

男人说谎白皮书

谎言——幸福的润滑剂 你对她说过谎吗&#xff1f;我想&#xff0c;即使你和她是最深爱的一对&#xff0c;你也不敢轻易地摇头说你没有&#xff01;但并不是说两个人在一起生活&#xff0c;彼此之间就会充满谎言&#xff0c;就像梁静茹在《花园》里唱的一样&#xff1a;“谎言&…

胡晓曼:MindSpore 开源运营与治理 | DEV. Together 2021 中国开发者生态峰会

内容来源&#xff1a;2021 年 6 月 5 日&#xff0c;由 SegmentFault 思否主办的 2021 中国开发者生态峰会圆满落幕。会上&#xff0c;华为 MindSpore 运营总监胡晓曼发表了主题为《MindSpore 开源运营与治理》的演讲。分享嘉宾&#xff1a;胡晓曼&#xff0c;华为 MindSpore 运…

vue自定义html布局,vue的自定义布局(vm/vh)

目录1. px与视口2. %3. 媒体查询4. rem5. vm/vh1. vw/vh的定义css3中引入了一个新的单位vw/vh&#xff0c;与视图窗口有关&#xff0c;vw表示相对于视图窗口的宽度&#xff0c;vh表示相对于视图窗口高度&#xff0c;除了vw和vh外&#xff0c;还有vmin和vmax两个相关的单位。各个…

Memcached 缓存个体,对象,泛型,表

最近&#xff0c;为提高数据查询速度&#xff0c;想做点缓存&#xff0c;通过网上了解&#xff0c;觉得&#xff0c;最好使用的就是Memcached&#xff1b;下面简单给大家介绍下Memcached&#xff1b; 下面是两位大牛关于Memcached的介绍&#xff1b;大家可以看看 http://zhoufo…

C# 语言特性

Codeusing System;using System.Collections.Generic;using System.Text;namespace InterfaceShadow{ interface ISomeInterface { void DoSomething(); } class Class1 : ISomeInterface { #region ISomeInterface 成员 public void DoSo…

北方人的快乐。。。| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频来源 最走心的视频&#xff0c;侵权删&#xff09;

游国色天香中国馆有感

游国色天香中国馆有感——代腾飞 2007年9月16日 于成都漫步花丛望楼亭湖上泛舟烟雨行中国山河多绣丽怎叫诗人不生情

微型计算机c560,2010广东省计算机等级考试试题 二级C试题最新考试试题库

1、办公自动化是计算机的一项应用&#xff0c;按计算机应用的分类&#xff0c;它属于( C )A、科学计算 B、实时控制 C、数据处理 D、辅助设计2、计算机最主要的工作特点是( A )A、程序存储与自动控制 B、高速度与高精度C、可靠性与可用性 D、有记忆能力3、一般情况下&#xff0…

如何掌握C#的核心技术

如何掌握C#的核心技术原图来自网络&#xff0c;如有侵权&#xff0c;请联系小编删除。引子前不久看到一个段子&#xff0c;某年宁波交警引进人脸识别技术抓拍行人闯红灯&#xff0c;结果一天下来被发现闯红灯次数最多的是珠海女子董小姐&#xff0c;日闯红灯3000多次。宁波交警…

Zend_Feed 的项目实际应用

author songfengRSS0.9/1.0/2.0 ATOM 全部是内容聚合的应用&#xff0c;优点一是浏览者可以订阅其网站&#xff0c;能收到最新的网站更新内容&#xff0e;二是有利于搜索引擎抓取&#xff0e;个人感觉缺点是会被其它网站当成复制品&#xff0c;批量 抓取网站更新内容&…

mysqldump 的常用参数。

mysqldump 常用参数详解&#xff1a;--databases&#xff1a;备份多个数据库&#xff0c;选项后跟多个库名。备份文件中会包含USE db_name。--events : 备份事件--routines&#xff1a;备份存储过程和函数--ignore-tableTableName :指定不需要备份的表--tables&#xff1a;…

怪咖发明家,乔布斯给了他四亿,他没要,转身靠发明救了10亿人。

全世界只有3.14 %的人关注了青少年数学之旅提到乔布斯&#xff0c;大家会想到什么呢&#xff1f;苹果公司创始人&#xff1f;iPhone手机&#xff1f;iPad?人生赢家&#xff1f;不过大家肯定没有想到乔布斯也有吃瘪的时候&#xff1a;有一次&#xff0c;乔布斯对电动平衡车赛格…

西北纺织工学院97级计算机系学生毕业名单,原西北纺织工学院更名为西安工程大学...

原西北纺织工学院&#xff0c;曾更名为西安工程科技学院&#xff0c;2006年2月更名为西安工程大学。西北纺织工学院位于世界闻名的历史文化古都西安市&#xff0c;是中国纺织总会直属高等院校&#xff0c;也是我国西北和西南地区唯一的一所纺织高等学府&#xff0c;担负着培育纺…

祝贺|合肥.NET俱乐部第二期技术沙龙活动圆满成功

热烈祝贺合肥.NET俱乐部第二期技术沙龙圆满成功&#xff0c;感恩参与活动的每一位小伙伴&#xff01;正是因为有你们才促成了这次聚会的成功。现对此次活动进行简单回顾并附上精彩的活动图片&#xff0c;每一位参与活动者名单&#xff0c;以及此次活动讲师分享的PPT供大家学习下…

几个常用的JS代码.

//函数列表function PostCookie(cookieName) { var expdate new Date(); expdate.setTime(expdate.getTime() 604800000); document.cookiecookieName";expires"expdate.toGMTString()";path /;domain.52z.com"; }//用于产生随机轮转广告 i 随机个…

SQL中合并多行记录的方法总汇

SQL中合并多行记录的方法总汇——前几天还在抱怨&#xff1a;sql只有sum(数值)&#xff0c;不能sum(字符串)——如果不是分组统计&#xff0c;用select values values , value也是可以的——但是如果是分组sum(字符串)&#xff0c;肯定不行了&#xff01;——下面是用函数实…

Python中文编码判别及转换

为什么80%的码农都做不了架构师&#xff1f;>>> 养成使用utf8格式的习惯&#xff0c;但是不能保证所有的代码都是utf8格式&#xff0c;所以这里提供三个函数 getCoding tran2UTF8 tran2GBK &#xff0c;分别是查看编码格式&#xff0c;转换为utf8&#xff0c;gbk格…

计算机二级中制作流程图的视频教程,流程图怎么做?1分钟教会你流程图制作方法...

流程是指在特定情景下用一系列逻辑满足特定用户需求的一种总结&#xff0c;借助流程图不仅可以梳理产品需求背后的逻辑和流程&#xff0c;还可以将新的想法和概念借助流程图这个载体分享出来&#xff0c;让整个项目参与者更好的认知产品设计的思路和逻辑。为了让职场的你更好的…

Source Generators实现简版AutoMapper

问题在业务开发中&#xff0c;我们常常需要将一个对象映射成另一个对象。例如将领域实体(UserEntity)映射成暴露给服务外部使用的数据传输对象(UserDto)。而AutoMapper则是目前主流的解决方案&#xff0c;实现类似如下代码&#xff1a;var configuration new MapperConfigurat…