c#处处能给你惊喜
今天c#又给了我一个大大的惊喜,今天我打算给DateTime 的对象初始化一个空指针null,写了这样一行代码:DateTime updateTime = null; 在面向对象的一般情况中,给一个对象赋值空指针是很正常的,而且是有时候为了释放类存是必须的。可是,到了c#中,它就不行了。错误信息是: “无法将 NULL 转换成“System.DateTime”,因为它是一种值类型 。” DateTime居然是值类型的。那么怎么将DateTime类型置空呢,经过google找到了解决办法:
Nullable<DateTime> now = null; 或者DateTime? now = null; 
问题是解决了,可是这种写法让我很不爽,为什么要这样做呢,完全破换了整体美感,这个问号让我感觉像一窝粥里的一粒老鼠屎。而且让我最诧异的是,值类型居然能够赋值空指针null。看来经验有时候也是不可靠的。大神的想法真是无法理解!就像c#里面参数前面有修饰关键字 in,out,ref一样,指针就能解决所有问题,为什么要这些多余的东西呢?
微软总喜欢随心所欲的破坏一些大家普遍接受的东西来迎合他的产品,来让大家接受。一流的公司做标准说的真没错。当你在现有的规则下无法战胜对手,那就破坏规则。我对这种强盗逻辑非常鄙视。很多大公司不去破坏规则而尽力保护不是因为它没有能力而需要规则的保护,而是世界需要这种规则,否则这个世界就乱了。这才是一个有威望的大公司的作为。像IBM,多少大公司在它面前如过眼云烟,而它依然屹立不倒。你要完全制定新标准也可以,那你就不要去模仿别人,完全创新自己的产品,像苹果一样。微软用别人的思想打造自己的产品,为自己服务,苹果用自己的思想做自己的产品,为大家服务,这就是微软和苹果的区别。牢骚发完,心情舒畅!
                    
                
                
            
        
浙公网安备 33010602011771号